zoukankan      html  css  js  c++  java
  • unity, asset operations

    //----create asset

    //ref: http://wiki.unity3d.com/index.php?title=CreateScriptableObjectAsset

    CmyScriptableObject asset = ScriptableObject.CreateInstance<CmyScriptableObject> ();
     
            AssetDatabase.CreateAsset (asset, path);

            AssetDatabase.SaveAssets ();
            AssetDatabase.Refresh();
            EditorUtility.FocusProjectWindow ();
            Selection.activeObject = asset;


            //注:CmyScriptableObject类型最好单独定义在CmyScriptableObject.cs文件里,以保证所生成的asset文件的Script成员为非空。

    //----create a scriptable object and add it to an existing asset
                        CmyScriptableObject obj = ScriptableObject.CreateInstance<CmyScriptableObject> ();
                        AssetDatabase.AddObjectToAsset(obj,existingAsset);

                        // Reimport the asset after adding an object.
                        // Otherwise the change only shows up when saving the project
                        AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(obj));


                        Selection.activeObject = obj;

    //----remove object in asset

    //ref : http://answers.unity3d.com/questions/219465/how-can-i-remove-an-object-from-an-asset.html

                        UnityEngine.Object.DestroyImmediate(obj, true);

                //save

                              AssetDatabase.SaveAssets();

    //----get subasset of certain class type

    CmyScriptableObject obj = AssetDatabase.LoadAssetAtPath<CmyScriptableObject> (path);
           

    //----get all objects(sub assets) from assets

    //ref: http://answers.unity3d.com/questions/1066162/how-do-i-return-the-path-of-a-sub-asset-in-an-asse.html

    //suppose asset have objects(sub assets) attached to it

    UnityEngine.Object[] allassets = AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(asset));
                        int assetCount=allassets.Length;
                        Debug.Log("assetCount:"+assetCount);
                        for(int i=0;i<assetCount;i++){
                            UnityEngine.Object _asset=allassets[i];
                            Debug.Log(_asset.name);
                        }

    //----save asset

    //if only want save the specified asset, use:

    EditorUtility.SetDirty (asset);

    //if want save all assets, use:

    AssetDatabase.SaveAssets ();

    //----rename asset

    string errorMessage=AssetDatabase.RenameAsset(AssetDatabase.GetAssetPath(asset),"new name");
                if(errorMessage.Length==0){
                    Debug.Log("rename asset succ");
                }else{
                    Debug.Log("rename asset failed: "+errorMessage);
                }

    //----rename subasset

    CmyScriptableObject subAsset = AssetDatabase.LoadAssetAtPath<CmyScriptableObject> (AssetDatabase.GetAssetPath(asset));
            subAsset.name = "new name";

    //----hide subasset in Assets folder

    //ref: http://answers.unity3d.com/questions/210726/how-to-hide-files-in-project-directory.html

    CmyScriptableObject subAsset = AssetDatabase.LoadAssetAtPath<CmyScriptableObject> (AssetDatabase.GetAssetPath(asset));
      subAsset.hideFlags = HideFlags.HideInHierarchy;

  • 相关阅读:
    vue中的样式
    v-model 双向数据绑定
    v-on 事件修饰符
    Linq Join
    Elasticsearch.Net 异常:[match] query doesn't support multiple fields, found [field] and [query]
    MongoDB开启权限认证
    elasticsearch备份与恢复
    elasticserach + kibana环境搭建
    Kibana TypeError : Object #<GlobalState> has no method 'setDefaults'
    匿名函数
  • 原文地址:https://www.cnblogs.com/wantnon/p/5095651.html
Copyright © 2011-2022 走看看