Unity ScriptObject創建Asset文件


創建ScriptObject可以創建帶序列化的資源,只保存數據不用綁定在游戲對象上。創建出來的本子資源可以通過資源加載到游戲里使用。這里介紹一下使用Resources加載。

創建好的asset文件也可以在Inspector中進行編輯。

1 using System.Collections.Generic;
2 using UnityEngine;
3 
4 [CreateAssetMenu]
5 public class ChatConfig : ScriptableObject
6 {
7     [SerializeField]
8     public List<string> ChatContent;
9 }

這里寫一個簡單的數據。

其中[CreateAssetMenu]屬性可以在Create里點擊對應名稱創建asset文件。如下圖

可以直接在Inspector界面直接編輯數據

使用Resources Load類型為ChatConfig的對象就可以加載到所有數據,例如

1 var content = Resources.Load<ChatConfig>("ChatConfig");

同時也可以通過編寫代碼來創建asset文件,代碼中需要UnityEditor,所以代碼要放到Editor文件夾下。如果需要批量生成asset,使用代碼會更方便一些。

 1 using UnityEditor;
 2 using UnityEngine;
 3 
 4 public class CreateAssetEditor
 5 {
 6     [MenuItem("Assets/Create ScriptObject")]
 7     static void CreateScriptObject()
 8     {
 9         ChatConfig config = ScriptableObject.CreateInstance<ChatConfig>();
10         config.ChatContent = new System.Collections.Generic.List<string>
11         {
12             "A",
13             "B"
14         };
15 
16         AssetDatabase.CreateAsset(config, "Assets/Resources/NewChatConfig.asset");
17         AssetDatabase.SaveAssets();
18         AssetDatabase.Refresh();
19     }
20 }

其中創建了實例后可以對數據進行一個初始化。使用代碼時創建asset時,就可以不使用[CreateAssetMenu]屬性,以上效果如下圖

紅框內的就是使用unity[MenuItem]來擴展編輯器直接創建asset的效果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM