jat*_*49a 3 c# instantiation addition unity-game-engine
我的主资产文件夹中有一个脚本,名为BezierWalk.cs
在另一个脚本中Spawn,我尝试实例化预制件中的对象Sphere并附加到BezierWalk.cs它们。
Spawn脚本:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以看到注释掉的尝试...
我应该如何正确地做到这一点?谢谢。
如果您查看如何在统一中引用组件,答案应该很清楚 - 您是否尝试过列出的任何组件?
参考: https: //docs.unity3d.com/ScriptReference/GameObject.AddComponent.html
通常使用的是因为它易于阅读
objectYouCreate.AddComponent<ClassName>();
您可以使用
objectYouCreate.AddComponent(typeof(ClassName));
.cs 是供人类使用的,它是您可读的版本。所以你的代码中永远不需要 .cs 引用。
注意:我提到它是 ClassName 而不是 scriptname,因为虽然它们在统一的单一行为中是相同的,但在 c# 中的其他地方并不相同,所以重要的一点不是你创建的文件的名称,而是你创建的文件的名称。其中的类。
另一种方法是使用预制件,为您的对象制作一个预制件,其中包含您需要的所有组件。
| 归档时间: |
|
| 查看次数: |
8860 次 |
| 最近记录: |