Example #1
0
        }             //function_end

        /// <summary>
        /// 预先把GameObjectPreLoadAsset配置上的预制体打入对象池
        /// </summary>
        /// <returns></returns>
        IEnumerator PreLoadGameObjectIEn()
        {
            string abName    = "assetconfigs.u3dassetbundle";
            string assetName = "GameObjectPreLoadAsset";

#if UNITY_EDITOR
            UnityEngine.Object prefab = null;
            // 是否设置了使用assetbundle资源
            if (AssetBundleFramework.DeveloperSetting.GetUseAssetBundleAsset())
            {
                yield return(AssetBundleFramework.AssetBundleMgr.Instance.LoadBundleAsset(abName, assetName, false));

                prefab = AssetBundleFramework.AssetBundleMgr.Instance.GetYieldBundleAsset(abName, assetName);
            }
            else
            {
                prefab = AssetBundleFramework.AssetLoadInEditor.LoadObject <UnityEngine.Object>(abName, assetName);
            }
#else
            yield return(AssetBundleFramework.AssetBundleMgr.Instance.LoadBundleAsset(abName, assetName, false));

            UnityEngine.Object prefab = AssetBundleFramework.AssetBundleMgr.Instance.GetYieldBundleAsset(abName, assetName);
#endif

            if (prefab != null)
            {
                GameObjectPreLoadAsset goPreLoadAsset = prefab as GameObjectPreLoadAsset;
                foreach (var item in goPreLoadAsset.preLoadAssetList)
                {
                    yield return(new WaitForSeconds(0.1f));

                    AddGameObject(item.prefab, item.preLoadNum);
                }
            }
        }
Example #2
0
    public override void OnInspectorGUI()
    {
        GameObjectPreLoadAsset script = target as GameObjectPreLoadAsset;

        EditorGUILayout.LabelField("对象池预加载对象");
        EditorGUILayout.LabelField("数量:" + script.size);
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("+"))
        {
            Undo.RegisterCompleteObjectUndo(script, "GameObjectPreLoadAsset");
            script.size += 1;
        }
        if (GUILayout.Button("-"))
        {
            Undo.RegisterCompleteObjectUndo(script, "GameObjectPreLoadAsset");
            if (script.size > 0)
            {
                script.size -= 1;
            }
        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("预制体");
        EditorGUILayout.LabelField("数量");
        EditorGUILayout.EndHorizontal();

        if (script.preLoadAssetList == null)
        {
            script.preLoadAssetList = new List <GameObjectPreLoadAssetStruct>();
        }
        int i = 0;

        for (i = 0; i < script.size; i++)
        {
            if (i >= script.preLoadAssetList.Count)
            {
                GameObjectPreLoadAssetStruct preloadAsset = new GameObjectPreLoadAssetStruct();
                preloadAsset.preLoadNum = 1;
                script.preLoadAssetList.Add(preloadAsset);
            }
            EditorGUILayout.BeginHorizontal();
            script.preLoadAssetList[i].prefab     = EditorGUILayout.ObjectField(script.preLoadAssetList[i].prefab, typeof(GameObject), true) as GameObject;
            script.preLoadAssetList[i].preLoadNum = EditorGUILayout.IntField(script.preLoadAssetList[i].preLoadNum);
            if (script.preLoadAssetList[i].preLoadNum < 0)
            {
                script.preLoadAssetList[i].preLoadNum = 0;
            }
            if (GUILayout.Button("X"))
            {
                Undo.RegisterCompleteObjectUndo(script, "GameObjectPreLoadAsset");
                script.size -= 1;
                script.preLoadAssetList.RemoveAt(i);
            }
            EditorGUILayout.EndHorizontal();
        }

        if (script.preLoadAssetList.Count > 0)
        {
            script.preLoadAssetList.RemoveRange(i, script.preLoadAssetList.Count - i);
        }


        if (GUI.changed)
        {
            EditorUtility.SetDirty(target);
        }
    }