判断AssetBundle是否已经加载如果已经加载就不要重新加载了

本文详细介绍了如何使用Unity3D引擎通过自定义脚本来加载Logo资源,并实现场景之间的平滑过渡,包括加载纹理、初始化对象、场景切换逻辑等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using UnityEngine;
using System.Collections;

public class LoadLogoAsset : MonoBehaviour {
    public string _prefabName;
    public int _BundleIndex=0;
    //public string _nextScenesName;
    //public string _previousScenesName;
    public int _nextSceneIndex;
    public int _previousSceneIndex;
    public bool _isReload;
    public GameObject _loadTexture;
    WWW _www;
    GameObject _insObjA;
    //------------------
    static AssetBundle _BunA;
    static AssetBundle _BunB;
    static AssetBundle _BunC;
    static AssetBundle _BunD;
    static AssetBundle _BunE;
    static AssetBundle _BunF;
    //------------------
    static AssetBundle[] _LogoBundle={_BunA,_BunB,_BunC,_BunD,_BunE};
    IEnumerator Start() {
        Debug.Log(_LogoBundle[_BundleIndex]);
            if(_LogoBundle[_BundleIndex]==null){
                if(Application.platform == RuntimePlatform.Android)
                {
                     _www = new WWW(Application.streamingAssetsPath+"/"+_prefabName+".unity3d");
                }
                else
                {
                    _www = new WWW("file://" +Application.dataPath + "/StreamingAssets" + "/"+_prefabName+".unity3d");
                }
                yield return _www;
                _LogoBundle[_BundleIndex]=_www.assetBundle;
                if(_www.progress==1){
                    OnIns();
                }
            }else{
                OnIns();
            }
    }
    void OnGUI(){
        GUI.color = Color.red;
        if(_LogoBundle[_BundleIndex]==null)GUI.Label(new Rect(10,10,500,100),(" "+(int)(_www.progress*100)));
    }
    public void OnIns(){
        _loadTexture.SetActive(false);
        _insObjA=Instantiate(_LogoBundle[_BundleIndex].mainAsset)as GameObject;;
    }
    public void LoadNextScene(){
        Destroy(_insObjA);
        if(_isReload){
            _LogoBundle[_BundleIndex].Unload(false);
        }
        Application.LoadLevel(_nextSceneIndex);
    }
    public void LoadPreviousScene(){
        Destroy(_insObjA);
        if(_isReload){
            _LogoBundle[_BundleIndex].Unload(false);
        }
        Application.LoadLevel(_previousSceneIndex);
    }
}

 

转载于:https://www.cnblogs.com/sy88/p/3389608.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值