日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UnityEditor三自定义窗口 案例2

發布時間:2023/12/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UnityEditor三自定义窗口 案例2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文參自:?
克森https://mp.weixin.qq.com/s/4TEfD3W6RJZZbtBnC4pUQQ

本文為本人學習上鏈接的筆記微有改動,請點擊以上鏈接查看原文,尊重樓主知識產權。

---------------------------------------------------------------------------------------------------------

本文難點:

GUILayout.ExpandHeight(true) 使用液態高度: 相當于動態高度,用掉所有剩下的空間 GUILayoutUtility.GetRect() 方法會在剩下的區域返回指定寬高的矩陣 GUI.DrawTexture(Rect position, 0, GUILayout.ExpandHeight(true)),Texture image);畫貼圖

功能:

預覽一個腳本,轉為一個文本放到指定文件夾,反過來也有。

最終效果:


代碼:

using UnityEngine; using System.Collections; using System.IO; using UnityEditor;public class MyWindow : EditorWindow {/// <summary>/// 窗口的正確打開方式/// </summary>[MenuItem("Tool/My Window")]public static void ShowWindow(){EditorWindow.GetWindow(typeof(MyWindow), false, "My Tool");}void OnGUI(){Debug.Log(position);//整個窗口為水平布局GUILayout.BeginHorizontal();DrawLeft();DrawRight();GUILayout.EndHorizontal();}private string scriptsContext = "";private Vector2 scrollposition;/// <summary>/// 繪制左邊區域/// </summary>void DrawLeft(){//局部窗口為垂直布局GUILayout.BeginVertical(GUILayout.Width(position.width / 2));//空出5個像素GUILayout.Space(5);//繪制標簽GUILayout.Label("Preview");//開始滑塊區域scrollposition = GUILayout.BeginScrollView(scrollposition);//繪制文本區域scriptsContext = GUILayout.TextArea(scriptsContext, GUILayout.ExpandHeight(true));//液態高度(占滿高度)//結束滑塊區域GUILayout.EndScrollView();GUILayout.EndVertical();}//文件資源對象private TextAsset textAssetObje;//腳本資源對象private TextAsset scriptAssetObje;//文件保存的路徑private string saveFilePath = "";//腳本保存的路徑private string saveScritpPath = "";//繪制2D圖片對象private Texture2D image;/// <summary>/// 繪制右邊區域/// </summary>void DrawRight(){//局部窗口為垂直布局GUILayout.BeginVertical();GUILayout.Space(5);#region 腳本轉換為文本功能// 繪制對象字段(類型為TextAsset)textAssetObje = (TextAsset)EditorGUILayout.ObjectField("Script Object",textAssetObje, typeof(TextAsset), false);//繪制Text字段,用戶獲取用戶指定的路徑saveFilePath = EditorGUILayout.TextField("Save In", saveFilePath);GUILayout.Space(5);//當我們點擊這個按鈕時if (GUILayout.Button("Save File")){//執行這個方法SaveFile();}#endregionGUILayout.Space(5);#region 繪制顯示腳本內容功能//當點擊 Show Script 按鈕時if (GUILayout.Button("Show Script")){//執行 ShowScript 函數ShowScript();}#endregionGUILayout.Space(10);#region 文本轉換為腳本功能scriptAssetObje = (TextAsset)EditorGUILayout.ObjectField("Text Object",scriptAssetObje, typeof(TextAsset), false);saveScritpPath = EditorGUILayout.TextField("Save In", saveScritpPath);GUILayout.Space(5);//當我們點擊這個按鈕時if (GUILayout.Button("Create Script")){//執行這個方法CreateScript();}#endregion#region 繪制圖片//通過Resources.load() 加載指定的圖片if (image == null){image = Resources.Load<Texture2D>("image");}//GUILayoutUtility.GetRect()方法會在剩下的區域返回指定寬高的矩陣GUI.DrawTexture(GUILayoutUtility.GetRect((position.width / 2), 0, GUILayout.ExpandHeight(true)), image);#endregionGUILayout.EndVertical();}//默認文件保存路徑private const string defaultFilePath = "Assets/LitionUtility/TextAssets/";//默認腳本保存路徑private const string defaultScriptPath = "Assets/LitionUtility/ScriptAssets/";/// <summary>/// 腳本轉換文本/// </summary>void SaveFile(){//1.保存到默認路徑if (saveFilePath.Equals("")){//保存到默認路徑 //如果文件夾不存在if (!Directory.Exists(defaultFilePath)){//則創建文件夾Directory.CreateDirectory(defaultFilePath);}//1.寫入文件// 創建StreamWriterStreamWriter sw = new StreamWriter(defaultFilePath + textAssetObje.name + ".txt");//寫入文件sw.Write(textAssetObje.text);//關閉流sw.Close();}else{//保存到用戶指定的路徑//判斷文件夾是否存在if (!Directory.Exists("Assets/" + saveFilePath)){//不存在,則創建一個新的Directory.CreateDirectory("Assets/" + saveFilePath);}//同上StreamWriter sw = new StreamWriter("Assets/" + saveFilePath + "/" + textAssetObje.name + ".txt");sw.Write(textAssetObje.text);sw.Close();}//刷新資源AssetDatabase.Refresh();}void CreateScript(){//1.保存到默認路徑if (saveScritpPath.Equals("")){//保存到默認路徑 //如果文件夾不存在if (!Directory.Exists(defaultScriptPath)){//則創建文件夾Directory.CreateDirectory(defaultScriptPath);}//1.寫入文件// 創建StreamWriterStreamWriter sw = new StreamWriter(defaultScriptPath + scriptAssetObje.name + ".cs");//寫入文件sw.Write(scriptAssetObje.text);//關閉流sw.Close();}else{//保存到用戶指定的路徑//判斷文件夾是否存在if (!Directory.Exists("Assets/" + saveScritpPath)){//不存在,則創建一個新的Directory.CreateDirectory("Assets/" + saveScritpPath);}//同上StreamWriter sw = new StreamWriter("Assets/" + saveScritpPath + "/" + scriptAssetObje.name + ".txt");sw.Write(scriptAssetObje.text);sw.Close();}//刷新資源AssetDatabase.Refresh();//2.用戶指定的路徑}/// <summary>/// 將腳本的內容顯示到左邊的文本區域中/// </summary>void ShowScript(){//textAssetObje.text 將腳本的內容轉換成字符串//scriptsContext 用于顯示左邊文本區域對應的變量scriptsContext = textAssetObje.text;} }


-------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- --
文末:再次聲明請尊重樓主版權:?
克森 https://mp.weixin.qq.com/s/4TEfD3W6RJZZbtBnC4pUQQ

總結

以上是生活随笔為你收集整理的UnityEditor三自定义窗口 案例2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。