c# - 如何在运行时将脚本添加到实例化对象?

标签 c# unity3d add instantiation

我的主 Assets 文件夹中有一个名为 BezierWalk.cs

的脚本

在另一个脚本 Spawn 中,我尝试从 Prefab Sphere 实例化对象并将 BezierWalk.cs 附加到它们。

生成脚本:

public class Spawn : MonoBehaviour
{

  public GameObject Sphere;
  //string ScriptName = "BezierWalk";

  void Start()
  {  
      Vector3 vSpawnPos = transform.position;

      for (int i = 0; i < 20; i++)
        {
          var objectYouCreate = Instantiate(Sphere, vSpawnPos, transform.rotation);
          //objectYouCreate.AddComponent<T>("Assets/BezierWalk.cs");
          //objectYouCreate.AddComponent(typeof(ScriptName)) as ScriptName;
          //objectYouCreate.AddComponent<ScriptName>();
          //var myScript = Sphere.AddComponent<BezierWalk.cs>();
          vSpawnPos.z += 20;
        }       
   }

您可以看到注释掉的尝试...

我应该如何正确地做到这一点?谢谢。

最佳答案

如果您查看如何在 unity 中引用组件,答案应该很明确 - 您是否尝试过列出的任何组件?

引用:https://docs.unity3d.com/ScriptReference/GameObject.AddComponent.html

常用的是方便阅读

objectYouCreate.AddComponent<ClassName>();

你可以使用

objectYouCreate.AddComponent(typeof(ClassName));

.cs 是供人类使用的,它是您的可读版本。所以您永远不需要在您的代码中使用 .cs 引用。

注意:我提到它是类名而不是脚本名,因为虽然它们在统一的单一行为中是相同的,但在 c# 中的其他任何地方都不一样,所以,重要的一点不是你制作的文件的名称,而是其中类的名称。

另一种方法是使用预制件,为您的对象制作一个预制件,其中包含您需要的所有组件。

关于c# - 如何在运行时将脚本添加到实例化对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56849186/

相关文章:

c# - Unity,c++ native 插件不匹配的字节数组

unity3d - 在应用而非浏览器中打开Youtube和Tumblr链接-Unity

c - 在 C 中使用 Malloc 添加两个数组 HW

c# - 如何为枚举创建 EditorTemplate?

c# - 在 win 10 通用应用程序中使用 mvvm-light 导航服务时,无法将页面类型的对象转换为类型 'Windows.UI.Xaml.Controls.Frame'

c# - 将以一种形式输入的数据显示到另一种形式

android - java.lang.NoSuchMethodError : No static method zzb 错误

python - 添加我的类的两个实例

java - 如何在 Java 中将对象添加到 ArrayList

c# - 通过代理服务器从 C#/.NET 调用 Twilio API