デフォルトのボディを取得するためにサムネイルツール

 

 

System.Collectionsを使用しました。
System.Collections.Genericを使用しました。
System.IOを使用しました。
UnityEditorを使用しました。
UnityEngineを使用しました。

パブリッククラスThumbnaiWindow:EditorWindow 
{ 
    
    プライベート文字列OUTPATH = "資産/ TestPrefab"; 
    一覧<PrefabObj> m_ObjPath =新しいリスト<PrefabObj>(); 

    【のMenuItem( "ツール/ Thumbnais")] 
    パブリック静的ボイドのShowWindow()
    { 
        
        EditorWindow.GetWindow(typeof演算(ThumbnaiWindow))。
        Selection.selectionChanged =()=> 
        { 
            DEBUG.LOG( "変化")。
        }。
    } 
     プライベートベクトル2 scrollTextureView = Vector2.zero。

         scrollTextureView = GUILayout.BeginScrollView(scrollTextureView)。
         EditorGUILayout.BeginHorizo​​ntal(); 

         GUILayout.Label( "导出路径:"); 
         OUTPATH = GUILayout.TextField(OUTPATH)。
         EditorGUILayout.EndHorizo​​ntal(); 

         GUILayout.Label( "加入对象:"、EditorStyles.boldLabel)。
     
         
         (I 0 = int型、iがm_ObjPath.Countを<; ++ i)について
         { 
             EditorGUILayout.BeginHorizo​​ntal()。
             ストリングassetPath = m_ObjPath [I] .path。
             VAR OBJ = AssetDatabase.LoadAssetAtPath <ゲームオブジェクト>(assetPath)。

             EditorGUI.BeginChangeCheck(); 
             VAR newPrefab = EditorGUILayout.ObjectField(OBJ、typeof演算(ゲームオブジェクト)、偽);
             
             IF(EditorGUI.EndChangeCheck())
             {
                 VAR NEWPATH = AssetDatabase.GetAssetPath(newPrefab)。
                 m_ObjPath [I] .path = NEWPATH。
                 m_ObjPath [I] .nameの= newPrefab.name。
             } 
             IF(GUILayout.Button( "删除"))
             { 
                 m_ObjPath.RemoveAt(I)。
             } 
             EditorGUILayout.EndHorizo​​ntal()。
         } 

         EditorGUILayout.BeginHorizo​​ntal()。
         IF(GUILayout.Button( "添加空物体"))
         { 
             m_ObjPath.Add(新しいPrefabObj())。

         } 

         IF(GUILayout.Button( "添加所选对象"))
         { 
             ゲームオブジェクト[] OBJS = Selection.gameObjects。 
             のための(INT J = 0; J <objs.Length; J ++)
             { 
                 AddPrefabobj(OBJS [J]); 
             } 
         } 

         EditorGUILayout.EndHorizo​​ntal(); 

         EditorGUILayout.BeginHorizo​​ntal(); 
         IF(GUILayout .Button( "エクスポートサムネイル"))
         { 
             ExportThumbnail(); 
         } 

         IF(GUILayout.Button( "クリアすべての構成"))
         { 
             m_ObjPath.Clear(); 
         } 

         EditorGUILayout.EndHorizo​​ntal(); 
         GUILayout.EndScrollView(); 
     } 



     //エクスポート設定からサムネイル
    ます。public void ExportThumbnail() 
    {
        エディタobjeditor = Editor.CreateEditor(GameObject.Find( "AA")); 

        以下のために(INT i = 0; I <m_ObjPath.Count; iは++)
        { 
            ゲームオブジェクトOBJ = AssetDatabase.LoadAssetAtPath <ゲームオブジェクト>(m_ObjPath [I] .path)。

            AssetPreview.SetPreviewTextureCacheSize(1024)。
            Texture2D tempTexture = AssetPreview.GetAssetPreview(OBJ)。

            もし(tempTexture == nullの|| tempTexture.isReadable!)
            { 
                続けます。
            } 

            バイト[] bytesThumbnail = tempTexture.EncodeToPNG()。
            (もし!Directory.Exists(OUTPATH))
            {
                Directory.CreateDirectory(OUTPATH)。
            }
            FileStreamをoutputThumbnail = 
                新規のFileStream(OUTPATH + "/" + Path.GetFileNameWithoutExtension(m_ObjPath [I] .path)+ "_アイコン" + "の.png"、
                    FileMode.Create)。
            outputThumbnail.Write(bytesThumbnail、0、bytesThumbnail.Length)。
            outputThumbnail.Flush(); 
            outputThumbnail.Close(); 
        } 
        AssetDatabase.Refresh()。
    } 

    公共ボイドAddPrefabobj(ゲームオブジェクトOBJ)
    { 
        ストリングassetPath = AssetDatabase.GetAssetPath(OBJ)。
        PrefabObj prefabObj =新しいPrefabObj(); 
        prefabObj.name = obj.name。
        prefabObj.path = assetPath。
        isContian = falseのブール値。
        以下のために(INT i = 0; I <m_ObjPath.Count; iは++)
        { 
            IF(m_ObjPath [I] .nameの== prefabObj.name)
            isContian = TRUE。
           
        } 

        ため(INT i = 0; I <m_ObjPath.Count; iは++)
        { 
            IF(m_ObjPath [I] .nameの== NULL)
            { 
                m_ObjPath.RemoveAt(I)。
            } 
        } 

        もしm_ObjPath.Add(prefabObj)(isContian!)。
        
    } 


    publicクラスPrefabObj 
    { 
        パブリック文字列路と 
        公共の文字列名。
    } 

}

  

おすすめ

転載: www.cnblogs.com/xingyunge/p/10930989.html