RTS 게임을 만들고 있습니다. RTS 게임의 모든 유닛은 순찰, 공격 또는 빌드과 같은 일부 작업을 수행 할 수 있습니다. 통합으로 C# 스크립트의 string
및 integer
배열을 쉽게 수동으로 채울 수 있습니다.string에서 클래스 인스턴스를 만들고 생성자를 호출하십시오.
이 때문에 나는 string[] str_actions
배열을 영원히 단위로 가지고 있고 단위가 처음 초기화 될 때이 배열을 Action[] actions
으로 변환하는 것이 가장 쉽다고 결정했습니다.
아마 do this 할 수 있습니다
string className = "Attack"
Assembly assembly = Assembly.Load("Actions");
Type t = assembly.GetType("Actions."+className);
Action action = (Action)Activator.CreateInstance(t);
하지만이 두 가지 문제를 처리하지 않습니다 className
가 참조하는 0 인수
- 액션
Action
의 자식이 아닌 클래스
어떻게 처리합니까?
리플렉션을 사용하지 마십시오. 상속을 사용하십시오. 선택한 경우 직렬화를 사용하여 목록을 저장하지 않을 수 있습니다. – BradleyDotNET
저는 상속을 사용하고 있습니다. 모든 행동은'추상적 인 계급 행동'의 자녀입니다. 그러나 직렬화 [C#에서 * 리플렉션 사용] (http://msdn.microsoft.com/en-us/library/ee436098.aspx) - 문자열 인스턴스에서 클래스 인스턴스를 얻으려면 어떻게해야합니까? –
물론,이 모든 것을 사용자에게 반영하기 때문에 두 가지 질문에 대해 걱정할 필요가 없습니다 (아무도 수동으로 파일을 수정하지 않는다고 가정). 또는 당신이 걱정하고있는 것이 무엇입니까? – BradleyDotNET