?????????????????????lua????????????????????????????????????????????????????????
???/?? @???
??1?????
???????????????????????????????????????
???????
????????????????????go?????????????(1,1,1)????????????????????????????????Main.lua??????
- function Main()
- local go = UnityEngine.GameObject ('go')
- go.transform.position = Vector3.one
- end
复制代码
????????go????
?????????????????????????tankPrefab????????????Assets/Tank????????????????????
???????????????????????????Unity3D?????????????????????????????????????????????????????????????????????UI??????????????????????Unity3D?????????????????????????????????????????
??2?????
??LuaFramework??????????????????????????Assets/LuaFramework/Editor/Packager.cs??????????????????Assets/Tank?????????.prefab??????tank???
??????
????Build Windows Resource????StreamingAssets??????????
????????
????????Unity3D??????????????????????????????????????????????????????????????????????????API????
Unity3D????
??3???????
??????lua???main.lua???????????????resMgr???tank??TankPrefab??????????OnLoadFinish????OnLoadFinish???Instantiate??????
- --???????????lua??
- function Main()
- LuaHelper = LuaFramework.LuaHelper;
- resMgr = LuaHelper.GetResManager();
- resMgr:LoadPrefab('tank', { 'TankPrefab' }, OnLoadFinish);
- end
- --????????--
- function OnLoadFinish(objs)
- local go = UnityEngine.GameObject.Instantiate(objs[0]);
- LuaFramework.Util.Log("Finish");
- end
复制代码
????????????????????????
?????????
??4????????
?????????????LoadPrefab??????????????????LoadPrefab?ResourceManager????????Assets\LuaFramework\Scripts\Manager\ResourceManager.cs?????????????????
??LoadPrefab????????????????????????????????OnLoadAsset??????????????????????
LoadPrefab???
??ResourceManager????m_AssetBundleManifest?m_Dependencies?m_LoadedAssetBundles?m_LoadRequests?4????????????????????????????????????4?????????
ResourceManager???????
??m_AssetBundleManifest
????m_AssetBundleManifest????????Unity3D?????????tank.unity3D?????????????????????????????????????????????Unity3D????????????????????????
????????????
????????????????????????????????????????????????????????????????????????????????????????????????TankPrefab??????????common.unity3D????????????
????
??????Unity3D???????AssetBundle.manifest?????????????StreamingAssets???????????????????????????????????m_AssetBundleManifest??????????????????
m_AssetBundleManifest????AssetBundle.manifest???
????????????????????????????????????????
- string[] dependencies = m_AssetBundleManifest.GetAllDependencies(??);
复制代码
??m_LoadedAssetBundles
???????m_LoadedAssetBundles??????????????????????????????????????????????????????????????
- IEnumerator OnLoadAsset(XXX)
- {
- AssetBundleInfo bundle = GetLoadedAssetBundle(XXX);
- if(!bundle)
- bundle = OnLoadAssetBundle(??);
- ????
- ??????
- }
复制代码
????GetLoadedAssetBundle?????????????m_LoadedAssetBundles?????????OnLoadAssetBundle????????????
????????????? bundle.LoadAssetAsync(???,??)??????????
??m_Dependencies
??m_Dependencies??????????????????GetLoadedAssetBundle??????????????????????????????????????????????
- IEnumerator OnLoadAssetBundle(??)
- {
- //?????
- string[] dependencies = m_AssetBundleManifest.GetAllDependencies(abName);
- m_Dependencies.Add(abName, dependencies); //?????
- //?????
- for (int i = 0; i < dependencies.Length; i++)
- OnLoadAssetBundle(XXX)
- //????????
- download = WWW.LoadFromCacheOrDownload(??)
- //????? m_LoadedAssetBundles.Add(XXX)
- }
复制代码- AssetBundleInfo GetLoadedAssetBundle(??)
- {
- //?????
- AssetBundleInfo bundle = m_LoadedAssetBundles[??];
- if (bundle == null) return null;
- //?????
- foreach (string ???? in m_Dependencies[??])
- {
- if (m_LoadedAssetBundles[????]== null)
- return null;
- }
- return bundle;
- }
复制代码m_LoadRequests
??m_LoadRequests???<string, List<LoadAssetRequest>>??????LoadAssetRequest??????????????????
LoadAssetRequest
??????????????????????????????????????????????????
????????
?????????????2?????????????????????????2???????????????????????????????????m_LoadRequests??????????????????????????????m_LoadRequests??????????????
????2?????
???????????
- void LoadAsset(??)
- {
- If(m_LoadRequests[abName] == null)
- {
- m_LoadRequests[??].Add(?????);
- OnLoadAsset();
- }
- else
- {
- m_LoadRequests[??].Add(?????);
- }
- }
- IEnumerator OnLoadAsset(XXX)
- {
- ???
- ????
- foreach( request in m_LoadRequests[??] )
- {
- Request.????();
- }
- }
复制代码
??5??????
??????????????????????????????????????????????????????????????????
??????????LuaFramework????????????????????????????????????????
???????Unity3D???LuaFramework????
??????????????????????????????????????????
|