「Unity/ScriptableObject」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→使い方) |
(→保存) |
||
(同じ利用者による、間の1版が非表示) | |||
行50: | 行50: | ||
参考:https://tsubakit1.hateblo.jp/entry/20140322/1395476579 | 参考:https://tsubakit1.hateblo.jp/entry/20140322/1395476579 | ||
+ | |||
+ | ===保存=== | ||
+ | <pre> | ||
+ | using UnityEngine; | ||
+ | using UnityEditor; | ||
+ | public class CustomMenu | ||
+ | { | ||
+ | [MenuItem("CustomMenu/Save %i")] | ||
+ | private static void Save() | ||
+ | { | ||
+ | ExampleData exampleData = Resources.Load<ExampleData>("ExampleSetting"); | ||
+ | //exampleData.count = 1000; | ||
+ | EditorUtility.SetDirty(exampleData); | ||
+ | AssetDatabase.SaveAssets(); | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | 参考:https://ayousanz.hatenadiary.jp/entry/NaughtyAttributes%E3%81%AEButton%E3%82%92PlayMode%E3%81%A0%E3%81%91%E6%8A%BC%E3%81%9B%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%9F%E3%81%84 |
2023年11月25日 (土) 17:35時点における最新版
ScriptableObjectとは
.assetのファイルで、共有データを格納するファイル、データが、inspectorで表示されるので確認しやすい。
ScriptableObjectファイルの作成方法
以下Editorを使って作る
using UnityEditor; public class CreateExampleAsset : EditorWindow { [MenuItem("Example/Create ExampleAsset")] public static void Start() { var exampleAsset = CreateInstance<ExampleData>(); AssetDatabase.CreateAsset(exampleAsset, "Assets/Resources/ExampleSetting.asset"); AssetDatabase.Refresh(); } }
メニューのExample/Create ExampleAssetを選択すると Resources/ExampleAsset.assetが作成される。
参考:http://49.233.81.186/scriptableobject.html
使い方
MainScene.cs
public class MainScene : MonoBehaviour { ExampleData exampleData; void Start() { exampleData = Resources.Load<ExampleData>("ExampleSetting"); Debug.Log(exampleData.count); Debug.Log(exampleData.msg); } }
ExampleData.cs
using UnityEngine; public class ExampleData : ScriptableObject { public int count; public string msg; }
参考:https://tsubakit1.hateblo.jp/entry/20140322/1395476579
保存
using UnityEngine; using UnityEditor; public class CustomMenu { [MenuItem("CustomMenu/Save %i")] private static void Save() { ExampleData exampleData = Resources.Load<ExampleData>("ExampleSetting"); //exampleData.count = 1000; EditorUtility.SetDirty(exampleData); AssetDatabase.SaveAssets(); } }