2013-01-03 56 views
4

我使用Unity3D在C#中创建了一个游戏,我需要调用一个在运行时创建的脚本,因此我知道脚本的名称,因为我有一个与它完全相同的对象。在Unity3D中按名称加载脚本

我在运行时创建脚本,然后将其保存到我的资源文件夹,但随后我更改场景并需要调用该脚本并将其附加到当前场景中的Empty GameObject,所以我想使用类似的东西:

Script myScript = Resources.Load(myObject.name) as Script; 

但我知道这能不能做到这样,所以我在寻找一种方法,我可以做我想做的,因为我需要加载新的脚本中添加一些功能在运行时。

您是否知道我的问题的解决方案?非常感谢!!

回答

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

+0

嗯,我能做到这一点在编辑器中,但是当我生成项目,它抛出一个错误。 问题是我在运行时使用FileStream.WriteFile()创建了一个.cs文件,以便在构建项目时该文件不像其自身的类那样存在。事实上,在Unity编辑器中,我可以做到这一点,但是当我构建项目时,它会抛出错误“无法添加组件,因为类'myClass'不存在!” – MasterKehos

+0

你在游戏运行时编写这个类?你试图用这个来达到什么目的?也许有另一种方式来做到这一点。你能否提供一些见解,说明为什么你需要在运行时创建这个类? –