状況
UnityでC#を書いている時に、
Type type = Type.GetType("Game.Scenario.ScenarioPlayer");
Debug.Log(type); // => nullのような形でクラス名の文字列からTypeを取得しようと思ったのですが、typeはnullになってしまいます。
ScenarioPlayer は以下のように Game.Scenario 名前空間にあります。
namespace Game.Scenario
{
public class ScenarioPlayer
{
// do something
}
}解決方法
Type.GetType() を使うときは、カンマ区切りでアセンブリ名も指定する必要がありました。
Type type = Type.GetType("Game.Scenario.ScenarioPlayer, Assembly-CSharp");
Debug.Log(type); // => Game.Scenario.ScenarioPlayerUnityだと自分でアセンブリ分割してない場合、デフォルトのアセンブリ名は Assembly-CSharp になります。(エディタスクリプトの場合は Assembly-CSharp-Editor になります)
ちなみにアセンブリ名は以下のように取得できます。
string assemblyName = typeof(SkitStepContentDrawer).Assembly.GetName().Name;
Debug.Log(assemblyName); // => Assembly-CSharp参考

Type.GetType メソッド (System)
指定された型を表すTypeオブジェクトを取得します。
コメント