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