我正在使用Unity3D在C#中创建一个游戏,我需要调用我在运行时创建的脚本,所以我知道脚本的名称,因为我有一个与它完全相同的对象。
我在运行时创建脚本,然后将其保存到我的Resources文件夹,但后来我更改了场景并需要调用该脚本并将其附加到当前场景中的Empty GameObject,所以我想使用一些东西那样:
Script myScript = Resources.Load(myObject.name) as Script;
但我知道这不可能这样做,所以我正在寻找一种方法,我可以做我想做的事情,因为我需要加载新的脚本来在运行时添加一些功能。
你知道我的问题的任何解决方案吗?非常感谢!!
答案 0 :(得分:7)
这实际上比你想象的容易。您可以使用AddComponent方法将脚本添加到游戏对象。所以在你的等级改变之后你可以抓住你的空游戏对象并做一个:
var gameObject = ...
gameObject.AddComponent<Script>(); // where Script is the name of your Script's C# class
请参阅http://docs.unity3d.com/Documentation/ScriptReference/GameObject.AddComponent.html
答案 1 :(得分:-1)
GameObject gameObj = new GameObject();
Type scriptType = Type.GetType(nameSpace.className);
if (scriptType == null)
{
foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies())
{
var tempType = a.GetType(nameSpace.className);
if (tempType != null)
{
scriptType = tempType;
}
}
}
gameObj.AddComponent(scriptType);