「Unity/ScriptableObject」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→使い方) |
(→保存) |
||
| (同じ利用者による、間の8版が非表示) | |||
| 行1: | 行1: | ||
==ScriptableObjectとは== | ==ScriptableObjectとは== | ||
| − | . | + | .assetのファイルで、共有データを格納するファイル、データが、inspectorで表示されるので確認しやすい。 |
| − | == | + | ==ScriptableObjectファイルの作成方法== |
以下Editorを使って作る | 以下Editorを使って作る | ||
<pre> | <pre> | ||
| 行12: | 行12: | ||
public static void Start() | public static void Start() | ||
{ | { | ||
| − | var exampleAsset = CreateInstance< | + | var exampleAsset = CreateInstance<ExampleData>(); |
| − | AssetDatabase.CreateAsset(exampleAsset, "Assets/Resources/ | + | AssetDatabase.CreateAsset(exampleAsset, "Assets/Resources/ExampleSetting.asset"); |
AssetDatabase.Refresh(); | AssetDatabase.Refresh(); | ||
} | } | ||
| 行29: | 行29: | ||
public class MainScene : MonoBehaviour | public class MainScene : MonoBehaviour | ||
{ | { | ||
| − | + | ExampleData exampleData; | |
void Start() | void Start() | ||
{ | { | ||
| − | + | exampleData = Resources.Load<ExampleData>("ExampleSetting"); | |
| − | Debug.Log( | + | Debug.Log(exampleData.count); |
| − | Debug.Log( | + | Debug.Log(exampleData.msg); |
} | } | ||
} | } | ||
</pre> | </pre> | ||
| − | + | ExampleData.cs | |
<pre> | <pre> | ||
using UnityEngine; | using UnityEngine; | ||
| − | public class | + | public class ExampleData : ScriptableObject |
{ | { | ||
public int count; | public int count; | ||
public string msg; | public string msg; | ||
| − | + | } | |
| + | </pre> | ||
| + | |||
| + | 参考: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> | </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();
}
}
