본문 바로가기
프로그래밍/Unity

Unity 3D - C# delegate Dictionary

by neive 2014. 7. 4.
728x90

 

C# 을 다루는건 처음인지라 C++ 에서 잘 써먹던 func map 을 C# 으로 만들어보려고 백방으로 검색을
했으나 나오는게 없어서 그냥 직접 만듬 -_-
Dictionary 로 key 값을 참조 동작했으면 하는 function 을 불러오는 구조..
변수 넘기는건 ArrayList 를 사용해서 어떤 상황에든 다 되게 설계..

 

예제

 

using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;

public class SystemConsole : MonoBehaviour {

	public delegate bool Work(ArrayList val);
	protected Dictionary<string, Delegate>  m_WorkMap = new Dictionary<string, Delegate>();

	void Start () {
		m_WorkMap.Add("Test", new Work(Work_Test));
	}

	public void Run(string sKey)		// 이 함수를 어디선가 호출해야됨.. 물론 sKey 는 "Test" 로...
	{
		ArrayList val = ArrayList();
		val.Add("Good");
		if(m_WorkMap.ContainsKey(sKey))
		{
			Work func = (Work)m_WorkMap[sKey];
			func(val);	// 실제로는 start 에서 add 시킨 Work_Test 가 실행
		}
	}

	protected bool Work_Test(ArrayList val)
	{
		Debug.Log((string)val[0]);	// "Good"
		return false;
	}
}

728x90

'프로그래밍 > Unity' 카테고리의 다른 글

Unity3D - Shader Syntex Value  (0) 2014.10.23
Unity3D - Matrial Shader 교체  (0) 2014.10.23
Unity3D - sound error  (0) 2014.04.11
Unity3D - Editor 에서의 경로  (0) 2014.04.10
Unity 3D - 스크립트상 프리팹 생성과 삭제  (0) 2013.11.15

댓글