FC2ブログ
    05 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 07

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】Unityで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)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/587-8d838000
    この記事にトラックバックする(FC2ブログユーザー)