void QuickLoadObject()
    {
        string name      = prefab.name;
        string assetPath = UnityEditor.AssetDatabase.GetAssetPath(prefab);// UnityEditor.AssetDatabase.GetTextMetaFilePathFromAssetPath(.asset(prefab)[0];

        UnityEditor.AssetImporter importer = UnityEditor.AssetImporter.GetAtPath(assetPath);
        string assetBundle = importer.assetBundleName;

        if (string.IsNullOrEmpty(assetBundle))
        {
            UnityEditor.EditorUtility.DisplayDialog("提示", "预制体没有assetBundle标记", "确认");
            return;
        }
        if (bundles.Find((x) => x.assetName == name) != null)
        {
            UnityEditor.EditorUtility.DisplayDialog("提示", "信息已经加载到集合中", "确认");
            return;
        }

        RunTimeBundleInfo info = new RunTimeBundleInfo();

        info.assetName  = name;
        info.bundleName = assetBundle;
        info.isWorld    = !prefab.GetComponent <RectTransform>();
        info.parent     = transform;
        bundles.Add(info);
        UnityEditor.EditorUtility.SetDirty(this);
    }
Пример #2
0
    /// <summary>
    /// 获取对象实例
    /// </summary>
    void CreateInstance(GameObject prefab, RunTimeBundleInfo trigger)
    {
        if (prefab == null || trigger == null)
        {
            return;
        }
        GameObject go = GameObject.Instantiate(prefab);

        go.SetActive(true);
        go.transform.SetParent(trigger.parent, trigger.isWorld);
        if (trigger.OnCreate != null)
        {
            trigger.OnCreate(go);
        }
    }
Пример #3
0
    /// <summary>
    /// 创建对象
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="assetName"></param>
    /// <param name="onCreate"></param>
    public void GetGameObjectFromBundle(RunTimeBundleInfo trigger)
    {
        GameObject go;

        if (loadedPrefabs.TryGetValue(trigger.IDName, out go) && go != null)
        {
            CreateInstance(go, trigger);
        }
        else
        {
            assetLoader.LoadAssetFromUrlAsync <GameObject>(trigger.bundleName, trigger.assetName, (x) =>
            {
                if (x != null)
                {
                    loadedPrefabs[trigger.assetName] = x;
                    CreateInstance(x, trigger);
                }
                else
                {
                    Debug.Log(x + "::空");
                }
            });
        }
    }