예제 #1
0
    // ReSharper disable UnusedMember.Local
    // ReSharper disable InconsistentNaming
    void OnGUI()
    // ReSharper restore InconsistentNaming
    // ReSharper restore UnusedMember.Local
    { // classic OnGUI
        GUI.depth = 0;
        if (GUI.Button(new Rect(10, 10, 100, 50), "Load"))
        {
            // reset queues
            _wwwQueue.Reset();
            _assetBundleQueue.Reset();

            _objects.ForEach(Destroy);
            _loadedBundles.ForEach(delegate(AssetBundle bundle){ bundle.Unload(true); });

            foreach (string s in AssetUrls)
            {
                string[] arr = s.Split('|');

                if (arr.Length != 2)
                {
                    throw new Exception("Error in asset string");
                }

                string bundleUrl = arr[0];
                string assetName = arr[1];

                _wwwQueue.Send(new WWW(bundleUrl),
                               delegate(WWW request)
                {
                    //if (!string.IsNullOrEmpty(request.error)){
                    //    Debug.Log("Loading error: [" + bundleUrl + "]: " + request.error);
                    //    return;
                    //}

                    Debug.Log("Bundle loaded: " + request.url);
                    _loadedBundles.Add(request.assetBundle);

                    AssetBundleRequest assetBundleRequest = request.assetBundle.LoadAsync(assetName, typeof(GameObject));
                    _assetBundleQueue.Send(assetBundleRequest,
                                           delegate(AssetBundleRequest request2)
                    {
                        Debug.Log("Asset loaded: " + request2.asset.name);
                        GameObject go = (GameObject)Instantiate(request2.asset);
                        _objects.Add(go);

                        // add mouse orbit
                        GameObject cameraGo = GameObject.Find("Main Camera");
                        if (null != cameraGo)
                        {
                            MouseOrbitCs mouseOrbit = cameraGo.AddComponent <MouseOrbitCs>();
                            mouseOrbit.Target       = go.transform;
                        }
                    }
                                           );
                });
            }
        }
    }
예제 #2
0
// ReSharper disable UnusedMember.Local
// ReSharper disable InconsistentNaming
    void OnGUI()
// ReSharper restore InconsistentNaming
// ReSharper restore UnusedMember.Local
    { // classic OnGUI
        GUI.depth = 0;
        if (GUI.Button(new Rect(10, 10, 100, 50), _progress == 0 ? "Load" : "Loading: " + _progress + "%"))
        {
            // reset queues
            _bundleQueue.Reset();
            _assetBundleQueue.Reset();

            // destroy old object
            if (null != _object)
            {
                Destroy(_object);
            }

            // unload old bundle
            if (null != _bundle)
            {
                _bundle.Unload(true);
            }

            // load bundle
            _bundleQueue.Send(new WWW(BundleUrl),
                              delegate(WWW request)
            {
                Debug.Log("Bundle loaded: " + request.url);
                _bundle = request.assetBundle;

#if UNITY_5_0_OR_NEWER || UNITY_2017_1_OR_NEWER
                AssetBundleRequest assetBundleRequest = _bundle.LoadAssetAsync(AssetName, typeof(GameObject));
#else
                AssetBundleRequest assetBundleRequest = _bundle.LoadAsync(AssetName, typeof(GameObject));
#endif
                _assetBundleQueue.Send(assetBundleRequest,
                                       delegate(AssetBundleRequest request2)
                {
                    Debug.Log("Asset loaded: " + request2.asset.name);
                    _object = (GameObject)Instantiate(request2.asset);

                    // add mouse orbit
                    GameObject cameraGo = GameObject.Find("Main Camera");
                    if (null != cameraGo)
                    {
                        MouseOrbitCs mouseOrbit = cameraGo.AddComponent <MouseOrbitCs>();
                        mouseOrbit.Target       = _object.transform;
                    }
                }
                                       );
            }
                              );
        }
    }
예제 #3
0
    private void AssetLoadedHandler(AssetBundleRequest request)
    {
        Debug.Log("Asset loaded: " + request.asset.name);
        _object = (GameObject)Instantiate(request.asset);

        // add mouse orbit
        GameObject cameraGo = GameObject.Find("Main Camera");

        if (null != cameraGo)
        {
            MouseOrbitCs mouseOrbit = cameraGo.AddComponent <MouseOrbitCs>();
            mouseOrbit.Target = _object.transform;
        }
    }