我的主 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/