Files
UnrealEngineUWP/Engine/Documentation/Source/Programming/Assets/AsyncLoading/AsyncLoading.CHN.udn

95 lines
8.9 KiB
Plaintext
Raw Normal View History

<EFBFBD><EFBFBD>Title:_ekD<6B><44>n<EFBFBD>R}<7D>
Description:(WЏL<D08F>Ǐ z-N<>R}<7D><>SxS}<7D>D<EFBFBD><44>n<EFBFBD>v<EFBFBD>e<EFBFBD>l0
Crumbs:%ROOT%, Programming
Availability:Public
[TOC(start:2)]
## <00>i<EFBFBD><69>
Z<>{^_<>d4-N g<>Q*N<>e<EFBFBD>|<7C>~ <0C>O<7F>_<EFBFBD>S<EFBFBD>N<EFBFBD>f<EFBFBD>R{<7B>~g0W_ek<65>R}<7D>D<EFBFBD><44>npenc <0C>ُ<EFBFBD>N<EFBFBD>|<7C>~<7E>N<EFBFBD>f<EFBFBD>NZ<4E>{^_<>d3-N<>vMQd"}<7D>Q<EFBFBD>[S-NX[(W<>v<EFBFBD>_Y<>R<EFBFBD><52><30>N<EFBFBD>e<EFBFBD>e<EFBFBD>l<EFBFBD>e<EFBFBD>S<EFBFBD>N(W_<>Spenc<6E>^(u_N<5F>S<EFBFBD>N(W<><57>Y
N<EFBFBD>v<EFBFBD>pqpenc
NۏL<EFBFBD><EFBFBD>^(u <0C>@b<>N<EFBFBD>` N<>_<EFBFBD>OYu$N*N9hnc<00><><EFBFBD><EFBFBD>R}<7D>penc<6E>v<EFBFBD>Nx_0 g$N<>y<1A>(u<>v<EFBFBD>e<EFBFBD>l<EFBFBD>S<EFBFBD>N<EFBFBD>O<EFBFBD>`9hnc<00><><EFBFBD>eg_(u<>S<EFBFBD>R}<7D>penc0
## FStringAssetReferences <00>TTAssetPtr
<00>/g^b<><62><EFBFBD><EFBFBD>^_(uD<75><44>n<EFBFBD>vg<>{US<55>v<EFBFBD>e<EFBFBD>l/f <0C>R<>^N*NUProperty :_c<><63> <0C>v^K<><4B>NvQN*N{|<7C>v0(WZ<57>{^_<>d4-N <0C><>Y<EFBFBD>g<EFBFBD>`O(u:_c<><63>UObject ^\'`_(uN*ND<4E><44>n <0C><><EFBFBD>HNS_<53>R}<7D>S+T<><54>^\'`<60>v<EFBFBD>[a<><61>e\O<>R}<7D><><EFBFBD>*ND<4E><44>n<08><1A>Ǐ<EFBFBD>b<EFBFBD>[a<>>en(W0W<30>V-N <0C>b<05><1A>Ǐ<EFBFBD>N{|<O<>N8nb<>Oo`ُ7h<37>vN<4E>-NۏL<DB8F>_(u<><75><EFBFBD>[a<> <09>0<>Y<EFBFBD>g<EFBFBD>` NsQ<73>_/f&T(W8nb/T<>R<EFBFBD>e<EFBFBD><65>Y100%0W<30>R}<7D><>`<60>vD<76><44>n0<>Y<EFBFBD>g<EFBFBD>`<60>`<60><> <00>/g^/<00><><EFBFBD><EFBFBD>^ O(u<>T:_c<><63>N7h<37>v(u7bLub<75>eg_(uyr<79>[<5B>vD<76><44>n <0C> <0C> N/f;`/f<>R}<7D>_(u<>vD<76><44>n <0C><><EFBFBD>O(u `FStringAssetReference` b `TAssetPtr` 0
`FStringAssetReference` /fN*N<>{US<55>v<EFBFBD>~<7E>gSO <0C>S+T<>NN*NwQ gD<67><44>n<EFBFBD>[te T<>y<EFBFBD>vW[&{2N0<>Y<EFBFBD>g<EFBFBD>`(W{|-NR<>^N*N<><4E><EFBFBD>y{|<7C>W<EFBFBD>v^\'` <0C><><EFBFBD>HN<48>[\O>f:y(W<><7F>hV-N <0C>1\<5C>P/f*N `UObject *` ^\'`N7h0<><>S<EFBFBD>Ncknx0WYt<>pq<><54>[T <0C>@b<>N<EFBFBD>Y<EFBFBD>g<EFBFBD>` gN*NStringAssetReference <0C><><EFBFBD>HN<48>[N<>[<5B>S<EFBFBD>N(W<><57>Y
Nck8^<5E>]\O0TAssetPtr<00>W,g
N1\/fN*N<>N `FStringAssetReference` <00>v `TWeakObjectPtr` <0C><>[O(uN*Nyr<79>[<5B>v{|\O:N!jg <0C><>N<EFBFBD>O<EFBFBD>`<60><>P<EFBFBD>6R<><7F>hV(u7bLub<75> <0C>OvQ<76>NAQ<41><51> <09><>byr<79>[<5B>v{|0<>Y<EFBFBD>g@b_(u<>vD<76><44>nX[(W<>N<EFBFBD>QX[-N <0C><><EFBFBD>HN `TAssetPtr.Get()` <>V<EFBFBD><56>D<EFBFBD><44>n0<>Y<EFBFBD>g<EFBFBD><67>D<EFBFBD><44>n N(W<>QX[-N <0C><><EFBFBD>HN<48>`<60><><EFBFBD>S<EFBFBD>N<03>(u `ToStringReference()` eg<65>g~b<>[_(u<>vD<76><44>n <0C>v^O(u Nb<4E><62>N<EFBFBD>~<7E>v<EFBFBD>e<EFBFBD>l<EFBFBD>R}<7D><><EFBFBD>D<EFBFBD><44>n <0C>6qT<>Q!k<03>(u `TAssetPtr.Get()` <00><>d<EFBFBD><64>[<5B><>D<EFBFBD><44>n<EFBFBD>v_(u0
<00>Y<EFBFBD>g<EFBFBD>/g^b<><62><EFBFBD><EFBFBD>^ck(WKb<4B>R0W<30><57>n_(u <0C><><EFBFBD>HNO(u TAssetPtrs <00>T StringAssetReferences/f^<5E>8^<02>T<>v <0C>FO<46>Y<EFBFBD>g<EFBFBD>`<60>`ۏL<DB8F>{|<O<>N<EFBFBD>g<EFBFBD><67>ُ7h<37>vYt <0C><>g~b<>n<EFBFBD><6E>yr<79>[<5B><>Bl<42>vD<76><44>n <0C> <0C> N/f<>R}<7D>@b gD<67><44>n <0C><><EFBFBD>HN<48>`<60>^<5E><>O(uD<75><44>n<EFBFBD>l<EFBFBD>Qh<51><68>S<EFBFBD>[a<><61>^0
## D<><44>n<EFBFBD>l<EFBFBD>Qh<51><68>T<EFBFBD>[a<><61>^
D<><44>n<EFBFBD>l<EFBFBD>Qh<51>/fN*NX[<5B>PD<50><44>n<EFBFBD>vCQpenc<6E>v<EFBFBD>|<7C>~ <0C>AQ<41><51><EFBFBD>`d"}<7D>S<EFBFBD>g<EFBFBD><67>ُ<EFBFBD>ND<4E><44>n0<><7F>hVO(udkD<6B><44>n<EFBFBD>l<EFBFBD>Qh<51>eg>f:y<>Q<EFBFBD>[OmȉhV-N<>v<EFBFBD>Oo` <0C>FO/f<>`_N<5F>S<EFBFBD>N<EFBFBD>N8nb'`<60>NxO(u<><75><EFBFBD>l<EFBFBD>Qh<51> <0C>eg<65>g~bS_MR<4D>l g<>R}<7D><>v8nbD<62><44>n<EFBFBD>v<EFBFBD>vsQCQpenc0<><30><EFBFBD>`O<7F>_N*ND<4E><44>n<EFBFBD>vpenc/f<>Sd"}<7D>v <0C><>`<00><><EFBFBD><EFBFBD>~<7E><>^\'`<60>m<EFBFBD>R"AssetRegistrySearchable"h~{0<>g<EFBFBD><67>D<EFBFBD><44>n<EFBFBD>l<EFBFBD>Qh<51><4F>VFAssetData{|<7C>W<EFBFBD>v<EFBFBD>[a<> <0C><>[S+T<>NsQ<73>N<EFBFBD><4E><EFBFBD>[a<><61>v<EFBFBD>Oo`<60>TN*N .<2E>- 0<P <00>[ f\h<> <0C><><EFBFBD> f\h<>S+T<>Nh<><68>:N<>Sd"}<7D>v^\'`0
Ytb<>~<7E>v*g<>R}<7D><>vD<76><44>n<EFBFBD>vg<>{US<55>e<EFBFBD>l/fO(u `ObjectLibrary` 0`ObjectLibrary` /fN*N<>[a<> <0C>S+T<>NN<>|R<>~bqQ<71>N<EFBFBD>W{|<7C>v*g<>R}<7D><>[a<>b<05>*g<>R}<7D><>[a<><61>vFAssetData 0<>`<60>S<EFBFBD>N<1A>Ǐ<EFBFBD>c<EFBFBD>ON*Nd"}_eg<65>R}<7D>N*N<>[a<><61>^ <0C><>[\<5C>R}<7D><><EFBFBD>*N_-N<>v@b gD<67><44>n0ُ/f^<5E>8^ g(u<>v <0C><>V:N<>`<60>S<EFBFBD>N:N N T{|<7C>Wc<>[<5B>`<60>v<EFBFBD><76>R<>Q<EFBFBD>[<5B>e<EFBFBD>N9Y <0C>N <00>/g^/<00><><EFBFBD><EFBFBD>^ N<00><><EFBFBD>Kb<4B>R<><7F>nUSh<53>1\<5C>S<EFBFBD>N<EFBFBD>m<EFBFBD>R<EFBFBD>e<EFBFBD>vD<76><44>n0ُ̑/fN*N:y<>O <0C>U\:y<>N<EFBFBD>YUOO(uN*N<>[a<><61>^eg<65>N<EFBFBD>x<EFBFBD>v<EFBFBD>R}<7D>AssetData<1A>
if (!ObjectLibrary)
{
ObjectLibrary = ConstructObject<UObjectLibrary>(UObjectLibrary::StaticClass());
ObjectLibrary->ObjectBaseClass = BaseClass;
ObjectLibrary->UseWeakReferences(GIsEditor);
ObjectLibrary->AddToRoot();
}
ObjectLibrary->LoadAssetDataFromPath(TEXT("/Game/PathWithAllObjectsOfSameType");
if (bFullyLoad)
{
ObjectLibrary->LoadAssetsFromAssetData();
}
(Wُ*N:y<>O-N <0C><>[R<>^<5E>NN*N<>e<EFBFBD>v<EFBFBD>[a<><61>^ <0C>sQT<51><54>NN*N<>W{| <0C>6qT<>R}<7D><>N<EFBFBD>~<7E>[_-N<>v@b gD<67><44>npenc0<>c@w <09><>b'`0W<30>R}<7D>wck<63>vD<76><44>n0<>Y<EFBFBD>gD<67><44>n<EFBFBD>_\ <0C>b<05><>Y<EFBFBD>g<EFBFBD>`ck(WۏL<DB8F><4C>pqN<00><><EFBFBD>nx<6E>O<EFBFBD>pq@b g<>Q<EFBFBD>[ <0C><><EFBFBD>HN<48>`R<00><><EFBFBD><EFBFBD>[hQ0W<30>R}<7D>ُ<EFBFBD>ND<4E><44>n0<>S<EFBFBD><53><EFBFBD>`(W<>p z-NgbL<62>N!kD<6B><44>n<EFBFBD>l<EFBFBD>Qh<51><68>g<EFBFBD><67> <0C>v^<5E>R}<7D>ԏ<EFBFBD>V<EFBFBD>vD<76><44>n <0C><>`<60>v<EFBFBD>[a<><61>^1\<5C>S<EFBFBD>Nck8^0W(W<>pqpenc-N<>S%c\O(u <0C>1\<5C>P(W_<> z-N<>vYtN7h0N<>e<EFBFBD>bD<62><44>npenc>eeQ0R<30>NN*N `ObjectLibrary` -N <0C><>`<60>S<EFBFBD>NۏL<DB8F><4C>g<EFBFBD><67>v^ <09><>b'`0W<30>R}<7D>yr<79>[<5B>vD<76><44>n0ُ̑/f:y<>O <0C>U\:y<>N<EFBFBD>YUOۏL<DB8F><4C>g<EFBFBD><67><1A>
TArray<FAssetData> AssetDatas;
ObjectLibrary->GetAssetDataList(AssetDatas);
for (int32 i = 0; i < AssetDatas.Num(); ++i)
{
FAssetData& AssetData = AssetDatas[i];
const FString* FoundTypeNameString = AssetData.TagsAndValues.Find(GET_MEMBER_NAME_CHECKED(UAssetObject,TypeName));
if (FoundTypeNameString && FoundTypeNameString->Contains(TEXT("FooType")))
{
return AssetData;
}
}
(Wُ*N:y<>O-N <0C><>[d"}<7D>[a<><61>^v^<5E>g~b<>NUOwQ g `TypeName` <00>e,g<>WN勇e,g<>W-NS+T "FooType" <00>v<EFBFBD>[a<> <0C>6q<54>V,{N!k<>g~b0R<30>v<EFBFBD>[a<>0N<>e g<>Ndk `AssetData` ,<00>`<60>S<EFBFBD>N<03>(u `ToStringReference()` eg<65>b<EFBFBD>[l<>bcbN*N `FStringAssetReference` <0C>6qT<>`<60>S<EFBFBD>NO(u NN*N<>|<7C>~ۏL<DB8F>_ek<65>R}<7D>0
## StreamableManager<08><>R`<60>R}<7D><>{thV <09><>T_ek<65>R}<7D>
<00>s(W <0C><>`wQ gN*N_(u<>N<EFBFBD>x<EFBFBD>v
NN*ND<4E><44>n<EFBFBD>v `FStringAssetReference` <0C><><EFBFBD>HN`7hwck0W_ek<65>R}<7D><>[<5B>T<1F> FStreamableManager/f<>[bُ*NYt<>vg<>{US<55>e<EFBFBD>l0<><30>HQ <0C><>`<00><><EFBFBD>R<>^N*N `FStreamableManager` <0C>b<>^<5E><>`O<>b<EFBFBD>[>e0R<30>g*NhQ@\8nbUS<55>O<EFBFBD>[a<>-N <0C><>k<EFBFBD>Y(W `DefaultEngine.ini` -NO(u `GameSingletonClassName` c<>[<5B>v<EFBFBD>[a<>06qT <0C><>`<60>S<EFBFBD>N<EFBFBD>b `StringAssetReference` O<>~<7E><><EFBFBD>[a<> <0C>v^/T<>RۏL<DB8F><4C>R}<7D>0`SynchronousLoad` \OۏL<DB8F><4C>{US<55>v0;<3B><>x<EFBFBD>R}<7D> <0C>v^ԏ<>V<EFBFBD><56><EFBFBD>[a<><30>y<EFBFBD>e<EFBFBD>l<EFBFBD>[<5B>N<EFBFBD><4E>\<5C>v<EFBFBD>[a<><61>S<EFBFBD><53><EFBFBD>_}Y <0C>FO/f<>[<5B>S<EFBFBD><53>OO<7F>`<60>v;N<>~ z\P<50><7F>e<EFBFBD><65>Ǐ<C78F>0<>Q<EFBFBD>s<EFBFBD><73><EFBFBD>y<EFBFBD>`<60>Q <0C><>`\<00><><EFBFBD>O(u `RequestAsyncLoad` <0C><>[\O_ek0W<30>R}<7D>N<>~D<><44>n <0C>v^(W<>[bT<03>(uN*N<>Nt0ُ̑/fN*N:y<>O<1A>
void UGameCheatManager::GrantItems()
{
TArray<FStringAssetReference> ItemsToStream;
FStreamableManager& Streamable = UGameGlobals::Get().StreamableManager;
for(int32 i = 0; i < ItemList.Num(); ++i)
{
ItemsToStream.AddUnique(ItemList[i].ToStringReference());
}
Streamable.RequestAsyncLoad(ItemsToStream, FStreamableDelegate::CreateUObject(this, &UGameCheatManager::GrantItemsDeferred));
}
void UGameCheatManager::GrantItemsDeferred()
{
for(int32 i = 0; i < ItemList.Num(); ++i)
{
UGameItemData* ItemData = ItemList[i].Get();
if(ItemData)
{
MyPC->GrantItem(ItemData);
}
}
}
(Wُ*N:y<>O-N <0C>ItemList /fN*N `TArray< TAssetPtr<UGameItem> >` <0C>1u<31><75><EFBFBD><EFBFBD><EFBFBD>NXT(W<><7F>hV-NۏL<DB8F><4C>O9e<30>k<EFBFBD>Nx<><78><EFBFBD>N<EFBFBD><4E>*NRh<52> <0C>\Rh<52>y<EFBFBD>l<EFBFBD>bc:N `StringReferences` <0C>v^\<5C>[<5B>NۏL<DB8F><4C>c<1F>0S_@b gRh<52>y<EFBFBD><79><EFBFBD><EFBFBD>R}<7D>T<08>b<05>1u<31>N:1YRh<52>y<EFBFBD> <0C> N<><4E><EFBFBD>R}<7D> <09> <0C><>[\(W<>Nt-N<03>(u<>]<1A>Ǐ<EFBFBD>v<EFBFBD>vsQYt0<><30><EFBFBD>Nt6qT<><54><EFBFBD>N T7h<37>vRh<52>y<EFBFBD> <0C>:SR<>[<5B>N <0C>v^<5E>b<EFBFBD>[<5B>N<EFBFBD>c<EFBFBD>O<EFBFBD>~N*N<>s<EFBFBD>[0`StreamableManager` (W<03>(u<><75><EFBFBD>NtKNMR <0C>\<5C>Oc0R<30>NUO<55>[@b<>R}<7D><>v<EFBFBD>[a<><61>v:__(u <0C>@b<>N(W<03>(u<><75><EFBFBD>NtKNMR <0C><>`<60>S<EFBFBD>Nnx<6E>O<EFBFBD>`<60>`_ek<65>R}<7D><>v<EFBFBD>NUO<55>[a<><61><EFBFBD><EFBFBD>l g<><67><EFBFBD>W>W<>V6e0S_<03>(u<><75><EFBFBD>NtT <0C> `StreamableManager` ʑ>eُ<65>N_(u <0C>@b<>N<EFBFBD>`<60>`nx<6E>O<EFBFBD>[<5B>NN<>vX[(W <0C><>`<00><><EFBFBD>(WvQ<76>N0W<30>e<EFBFBD>[<5B>[<5B>NۏL<DB8F>:__(u0
<00>`<60>S<EFBFBD>NO(u T7h<37>v<EFBFBD>e<EFBFBD>leg_ek<65>R}<7D> `FAssetDatas` <0C><>N<00>(W<>[<5B>N
Nb<EFBFBD><03>(u `ToStringReference` <0C><>b<EFBFBD>[<5B>N<EFBFBD>m<EFBFBD>R0RN*Npe<70>~-N <0C>6qTO(uN*N<>Nt<03>(uRequestAsyncLoad 0<><30><EFBFBD>Nt<>S<EFBFBD>N/f<>`<60>`<60>d\O<>v<EFBFBD>NUO<55>Q<EFBFBD>[ <0C>@b<>N<EFBFBD>Y<EFBFBD>g<00><><EFBFBD> <0C>`O<>S<EFBFBD>N OeQ<1F>}<7D><>Oo`0<1A>Ǐ<EFBFBD>b<EFBFBD>~TO(u
N<EFBFBD><EFBFBD><EFBFBD>v<EFBFBD>e<EFBFBD>l <0C><>`<60>^<5E><><EFBFBD>S<EFBFBD>N<EFBFBD><4E>nN*NؚHe<48>R}<7D>8nb-N<>v<EFBFBD>NUOD<4F><44>n<EFBFBD>v<EFBFBD>|<7C>~0l<30>bc<62>v<EFBFBD>c<EFBFBD><63>QX[<5B>v8nb<>NxegYt_ek<65>R}<7D>\O<><4F>9<EFBFBD>N<>N<EFBFBD>e<EFBFBD><65> <0C>FO/fKNT<>`<60>v8nb\P<50>\<5C>S<EFBFBD>_^<5E>8^\ <0C>v^N<>QX[O(uϑO<>fNO0