やまめも

【 ゲーム開発・日々のことについて 】

【C#】enum列挙型 : 使用例

使用例1

//enumの名前でtypeなどを使うと、プラグインなどの変数名とかぶる可能性あり
public enum CollectionType {
	ITEM,
	HOSTAGE,
	BANDIT,
}

public class GalleryController : MonoBehaviour {

	public CollectionType type;

	public static GalleryController instance = null;
	void Awake(){
		if(instance == null) {
			instance = this;
		}
	}
	void AddChild(int i, CollectionType type, Sprite sprite){
		GameObject GalleryChild = Instantiate(ChildPrefab) as GameObject;
		if(type == CollectionType.ITEM)
			GalleryChild.transform.SetParent(ListParent.transform);
		if(type == CollectionType.HOSTAGE)
			GalleryChild.transform.SetParent(ListParentHS.transform);
		if(type == CollectionType.BANDIT)
			GalleryChild.transform.SetParent(ListParentBN.transform);

	}
}

使用例2

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class GameOver : MonoBehaviour {

	public GameObject ReasonText;

	public enum Reason {
		TIMELIMIT,
		BOMB,
		MISTAKESHOOT,
		SHOOTED,
	}
	public Reason reason;

	public static GameOver instance = null;
	void Awake(){
		if(instance ==null){
			instance = this;
		}
	}
	void Update () {
		GameOverReasonText();
	}
	void GameOverReasonText(){
		if(reason == Reason.TIMELIMIT){
			ReasonText.GetComponent<Text>().text = "Time Limit. Polisi ditangkap";
		}
		if(reason == Reason.BOMB){
			ReasonText.GetComponent<Text>().text = "Misi gagal... Kena bomb. Polisi ditangkap";
		}
		if(reason == Reason.MISTAKESHOOT){
			ReasonText.GetComponent<Text>().text = "Misi gagal... Salah tembak. Polisi ditangkap";
		}
		if(reason == Reason.SHOOTED){
			ReasonText.GetComponent<Text>().text = "Misi gagal... Ditembak. Polisi ditangkap";
		}
	}
}
// 他のスクリプトから呼ぶ
// 以下のように呼び出す。
GameOver.instance.reason = GameOver.Reason.MISTAKESHOOT;

使用例3

public enum UIType{
	MainMenu, Gallery , Credits
}
	
public class MenuController : MonoBehaviour {

	//UIタイプ(何かUIで区別したいときに)
	public UIType uiType;
}

使用例4

const int MODE_EASY = 0;
const int MODE_NOLMAL = 1;
const int MODE_DIFFICULT = 2;

const int MODE_A;
const int MODE_B;

int mode = 0;
if (mode == MODE_EASY){
// 内容
}

enumを使って書くことができる。
列挙型という「型」になる。

enum Mode {
	MODE_EASY;
	MODE_NORMAL;
	MODE_DIFFICULT;
}
// 使うときにmodeと書く必要がある。
// どの範囲が限られている。
// enumでない場合だと、どこまでがmodeなのかわからなくなってくる。
Mode m = Mode.MODE_DIFFICULT;
if(m == Mode.MODE_DIFFICULT){
// 内容
}

【プログラミング講座(C#)】第36回 列挙型enum の使い方【独り言】 - YouTube