Unityで自作クラスを書く&活用する(MonoBehaviour継承クラス編)
コメント
Unityである程度の知識が身につくと、自作のクラスをつくってより自由な機能付加、チーム開発でも使いやすい環境づくりがしたくなってくる・・・ということで自作クラスを作ってインポートしてメソッド活用するところまでを記録しています
GUIコンソール上の留意点
とりあえず、ヒエラルキーのオブジェクトにくっつけないと使えないので、Cubeに自作クラスのDice(サイコロ機能)をつくって、さらにDiceを利用するためのC#スクリプトUseDiceをくっつけました。
コードの解説
↓サイコロのクラス↓
Dice.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Dice : MonoBehaviour { const int diceNumber = 6; //最初から値を決めたいたときはconstと書くとできます public int smallestNum; //publicと書けばコンソール上で数値変更できます private int result; //privateではコンソールからいじれません // Use this for initialization void Start () { //オブジェクトを動かすわけではないので今回は使いません。 } // Update is called once per frame void Update () { //オブジェクトを動かすわけではないので今回は使いません。 } //Diceの面(想定)を返すメソッド public int ShowDiceNum() { return diceNumber; } //サイコロを投げて値を返すメソッド public int ThrowDiceNum() { //コメントアウト部分。これだとUnityではエラー(.NETならOK) //Random rnd = new Random(); //int result = rnd.Next(smallestNum, diceNumber); //Unityならこうかく(Unity限定!) int result = Random.Range(smallestNum, diceNumber); return result; } }
↓サイコロを実際にStart時に一回振るというスクリプト↓
UseDice.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class UseDice : MonoBehaviour { // Use this for initialization void Start () { //注意 //Dice dice = new Dice();だと //class Dice : MonoBehaviourでMono~を継承しているのでwarnigがでます //Find("オブジェクト名").GetComponent<くっついてるスクリプト名>()で指定します Dice dice = GameObject.Find("Cube").GetComponent<Dice>(); Debug.Log(dice.ShowDiceNum()); Debug.Log(dice.ThrowDiceNum()); } // Update is called once per frame void Update () { } }