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;

  • 相关阅读:
    原创 ios绘制 圆形气泡
    ios 线程安全单例写法
    (转)ios中点击地图控件MKMapView的某点获取该点的经纬度
    使用正则提取url(iOS)
    MAC系统崩溃,使用命令行复制硬盘内容
    UISearchBar控件UI操作
    app发布流程详解
    App Store审核指南(中文版)2010版
    GCD详解
    iOS扫描二维码(系统方法)
  • 原文地址:https://www.cnblogs.com/wantnon/p/5095651.html
Copyright © 2011-2022 走看看