public void doit_AsyncLoad(bool doLoadAvatar,/*PlayerXR playerXR, */ Action <GameObject> OnSuccess, Action <GameObject> OnError) { WskRequest request; request = new WskRequest(); //request.playerXR = playerXR; request.OnSuccess = OnSuccess; request.OnError = OnError; //test string assetBundleName = "environment/forest1.avatar1"; string themePath; themePath = "western"; //themePath = "spaceshipTheme"; themePath = "spaceship1"; // avatar if (doLoadAvatar) { //assetBundleName = "western/avatar"; assetBundleName = themePath + "/avatar"; } //scene //assetBundleName = "western/rooms"; //table //assetBundleName = "western/tables"; if (!doLoadAvatar) { //if (Application.platform == RuntimePlatform.Android) // assetBundleName = "Android/western/rooms"; //else //{ // //if (Application.platform == RuntimePlatform.Windows) // assetBundleName = "Windows/western/rooms"; //} //assetBundleName = "western/rooms"; assetBundleName = themePath + "/rooms"; } string assetItem_PrefabName = "assets/polygonstarter/prefabs/characters/sm_bean_cop_01.prefab"; InstantiateObject(request, assetItem_PrefabName, assetBundleName); }
public void InstantiateObject(WskRequest wskRequest, string assetItem_PrefabName, string assetBundleName) { /* * (3) Environment selection & build script * * 3.1. Unity project configuration * Create an empty Unity project. Assuming the game would have online features and we’ll * have 3 environments (e.g. test, homologation and production, with different server URL’s), * create a way to define which environment to connect. When hitting ‘Play’, the game must display * which environment is selected. * */ if (Application.platform == RuntimePlatform.WebGLPlayer) { url = basePath + "WebGL/" + assetBundleName; } else if (Application.platform == RuntimePlatform.Android) { url = basePath + "Android/" + assetBundleName; } else if (Application.platform == RuntimePlatform.WindowsPlayer || Application.platform == RuntimePlatform.WindowsEditor) { // default - all other platforms url = basePath + "Windows/" + assetBundleName; } //TODO: 2 simultaneous AssetBundle request ==> only 1 async web request AssetBundleEx bundle_ex = null; for (int i = 0; i <= bundles.Count - 1; i++) { if (bundles[i].url == url) { bundle_ex = bundles[i]; } } if (bundle_ex == null) { bundle_ex = new AssetBundleEx(); if (bundle_ex.Requestlist == null) { bundle_ex.Requestlist = new List <WskRequest>(); } bundle_ex.url = url; bundles.Add(bundle_ex); } //TODO: use correct assetname //string assetname = "avatar1"; bundle_ex.assetItem_PrefabName = assetItem_PrefabName; bundle_ex.Requestlist.Add(wskRequest); Debug.Log("queue:" + bundle_ex.Requestlist.Count); if (bundle_ex.isReady_loadedOK) { //BundleReady_LoadedOK(bundle_ex); } else if (bundle_ex.loading) { // already loading, wait finish } else { // async request // start load and wait finish bundle_ex.loading = true; //StartCoroutine(RequestAssetBundleAsync(bundle_ex)); } }