5291人加入学习
(35人评价)
Unity商业游戏底层资源加载框架(Unity2018.1)

更新完成,更新时间2018-12-26

价格 ¥ 350.00
该课程属于 Unity - A计划(永久有效期) 请加入后再学习

for循环体最后一句加上break就可以了,

思路就是从高到低选择,选不到就跳到下一个级别,选中了处理完就终止这次循环,重新开始

[展开全文]

ReleaseObject不放回池子里,也会减少引用计数,

具体在ResourceManager.Instance.ReleaseResource(resObj, destroyCache);这句代码中去减少的

[展开全文]

 XML序列化主要用 XmlSerializer

二进制序列化主要用 BinaryFormatter

[展开全文]

直接看代码效率还高些,听老师讲太犯困了,没有图示啥的就不停地敲代码

[展开全文]

实在没理解啊,好难

[展开全文]

编辑器下资源回收需要置空所有引用

[展开全文]

感觉成员变量多的不行了

总感觉成员变量重复了很多,哭了

[展开全文]

程序集包含当前所在文件夹,以及当前文件夹的子文件夹

[展开全文]

编辑器脚本可以引用运行时脚本,但是运行时脚本如果引用编辑器脚本,打包时会报错。

[展开全文]

2018的Prefab模块被魔改了,老师的这种方式会出现断言错误,可以通过下面的方式进行加载

 [MenuItem("离线数据/生成所有UI离线数据")]
    public static void AllUICreate()
    {
        string[] allPath = AssetDatabase.FindAssets("t:Prefab", new[] { "Assets/GameData/Prefabs/UGUI" });
        for (int i = 0; i < allPath.Length; i++)
        {
            //转明文路径
            string path = AssetDatabase.GUIDToAssetPath(allPath[i]);
            EditorUtility.DisplayProgressBar("生成所有UI离线数据", "Prefab:" + path, i * 1.0f / allPath.Length);
            
            //1.新版获得对象
            GameObject obj = PrefabUtility.LoadPrefabContents(path);

            if (obj == null)
            {
                continue;
            }

            //调用修改数据的方法
            CreateUIData(obj);

            //2.新版本需要保存并释放引用
            PrefabUtility.SaveAsPrefabAsset(obj, path);
            PrefabUtility.UnloadPrefabContents(obj);

        }
        Debug.Log("所有UI离线数据生成成功");
        EditorUtility.ClearProgressBar();
    }

 

[展开全文]

图片加载不出来可以用下面这种形式,就不用在方法里面传参数了;

private void OnLoadSpriteTest1(string path, object obj, object param1 = null, object param2 = null, object param3 = null)
    {
        if (obj != null)
        {
            Texture2D texture = obj as Texture2D;
            Sprite sprite = Sprite.Create(texture, new Rect(0,0,texture.width,texture.height),new Vector2(1f,1f));
            m_MainPanel.Test1.sprite = sprite;
            Debug.Log("图片1已加载");
        }
    }

测试可以加载出来

[展开全文]
CacheResource(path, ref item, crc, obj)

这里的ref 应不应该加? ResourItem类型 本事是引用类型,传的也是引用吧?

[展开全文]

卸载的时候,是否要把 加载的依赖项 也卸载呢?

[展开全文]
//t:prefab or t:Prefab 表示type:Prefab-----  (t:TextAsset 表示文本类型),返回GUID

string[] allStr = AssetDatabase.FindAssets("t:prefab", abConfig.m_AllPrefabPath.ToArray()); 

foreach (var str in allStr)
{
    Debug.Log(AssetDatabase.GUIDToAssetPath(str)); //通过GUID找到资源的全路径(带后缀)
}

 

[展开全文]
 GameObject obj = Instantiate(assetBundle.LoadAsset<GameObject>("Attack.prefab"));

 GameObject obj2 = Instantiate(assetBundle.LoadAsset<GameObject>("Attack"));

后缀可加可不加,主要prefab中p小写

[展开全文]

 string[] resDependence = AssetDatabase.GetAssetBundleDependencies(abBase.ABName, true);

static void CreateConfig(Dictionary<string, string> validPathABNameDict)
    {
        AssetBundleConfig config = new AssetBundleConfig();
        config.ABList = new List<ABBase>();

        foreach (string path in validPathABNameDict.Keys)
        {
            ABBase abBase = new ABBase();
            abBase.Path = path;
            abBase.Crc = Crc32.GetCRC32(path);
            abBase.ABName = validPathABNameDict[path];
            abBase.AssetName = path.Remove(0, path.LastIndexOf("/") + 1);
            abBase.ABDependence = new List<string>();

            string[] resDependence = AssetDatabase.GetAssetBundleDependencies(abBase.ABName, true);

            foreach (string de in resDependence)
            {
                //Debug.LogFormat($"AB包:{abBase.ABName}  ------ 依赖{de}");
                abBase.ABDependence.Add(de);
            }
            config.ABList.Add(abBase);           
        }

        //写入XML
        .
        .
        .

        //写入二进制
        .
        .
        .

 

[展开全文]

授课教师

课程特色

下载资料(4)
视频(205)