【ハルシオンブログ】UnityでScriptableObjectを作成して、使う方法の紹介。なんか使いやすいように使ってください!
こんにちは。ハルシオンシステムですっ!
UnityでScriptableObjectを使い、マスタデータ的な感じでデータを使う方法ってあるじゃないですか。
それを簡単にやってみたいと思います。
①ScriptableObjectのコードを作成
[TestData.cs]
こんな感じで、testNo、testName、testAgeを持たせたTestDataクラスを作成します。
クラスの前にCreateAssetMenuというのがありますが、これは実際のScriptableObjectを作成する時に使う設定です。
これを書くことで、UnityのオブジェクトをCreateする場合に、menuNameに書かれた項目が出るようになります。

MakeTestDataを実行すると、以下のようなTestDataという名前のScriptableObjectができます。

②ScriptableObjectに値を入れる

こんな感じで、値を入れてみました。
③コードからScriptableObjectのデータを使用
[Script20190325.cs]
TestDataには先ほど作成した、ScriptableObjectをアサインします。

これで実行すると、こうなる。

(みずらい!)
こんな感じでScriptableObjectは用意し、使うことができます。
マスタデータのように使うんだったら、ScriptableObjectの方はこんな感じにした方がいいと思いますが。
[TestData.cs]
こうすることで、Listとして管理できます。

使う時はこうですね。
[Script20190325.cs]

まぁ好きなように使ってやってください。
ということで、ScriptableObjectの作り方と使い方の紹介でした!
あでゅ~ノシ
UnityでScriptableObjectを使い、マスタデータ的な感じでデータを使う方法ってあるじゃないですか。
それを簡単にやってみたいと思います。
①ScriptableObjectのコードを作成
[TestData.cs]
using UnityEngine;
[CreateAssetMenu(fileName = "TestData",menuName = "ScriptableObjects/MakeTestData")]
public class TestData : ScriptableObject
{
public int testNo;
public string testName;
public int testAge;
}
こんな感じで、testNo、testName、testAgeを持たせたTestDataクラスを作成します。
クラスの前にCreateAssetMenuというのがありますが、これは実際のScriptableObjectを作成する時に使う設定です。
これを書くことで、UnityのオブジェクトをCreateする場合に、menuNameに書かれた項目が出るようになります。

MakeTestDataを実行すると、以下のようなTestDataという名前のScriptableObjectができます。

②ScriptableObjectに値を入れる

こんな感じで、値を入れてみました。
③コードからScriptableObjectのデータを使用
[Script20190325.cs]
using UnityEngine;
public class Script20190325 : MonoBehaviour
{
[SerializeField]
private TestData testData;
void Start()
{
Debug.Log(testData.testNo + " : " + testData.testName + " ; " + testData.testAge);
}
}
TestDataには先ほど作成した、ScriptableObjectをアサインします。

これで実行すると、こうなる。

(みずらい!)
こんな感じでScriptableObjectは用意し、使うことができます。
マスタデータのように使うんだったら、ScriptableObjectの方はこんな感じにした方がいいと思いますが。
[TestData.cs]
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "TestData",menuName = "ScriptableObjects/MakeTestData")]
public class TestData : ScriptableObject
{
public List<TestEachData> testDatas = new List<TestEachData>();
[System.Serializable]
public class TestEachData {
public int testNo;
public string testName;
public int testAge;
}
}
こうすることで、Listとして管理できます。

使う時はこうですね。
[Script20190325.cs]
using UnityEngine;
public class Script20190325 : MonoBehaviour
{
[SerializeField]
private TestData testData;
void Start()
{
foreach(TestData.TestEachData data in testData.testDatas) {
Debug.Log(data.testNo + " : " + data.testName + " ; " + data.testAge);
}
}
}

まぁ好きなように使ってやってください。
ということで、ScriptableObjectの作り方と使い方の紹介でした!
あでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】Linqを使ってリストをランダムに並び替える | 【ハルシオンブログ】2DSprite、SpriteRendererの形によってPolygonCollider2Dをフィットさせたい!そんな時はこう! »
コメント
| h o m e |