facebook twitter hatena line email

「Unity/ScriptableObject」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(使い方)
(保存)
 
行51: 行51:
 
参考:https://tsubakit1.hateblo.jp/entry/20140322/1395476579
 
参考:https://tsubakit1.hateblo.jp/entry/20140322/1395476579
  
==保存==
+
===保存===
 
<pre>
 
<pre>
 
using UnityEngine;
 
using UnityEngine;

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();
    }
}

参考: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