【问题标题】:Instantiating a GameObject which has scripts applied实例化一个应用了脚本的游戏对象
【发布时间】:2017-05-08 05:07:51
【问题描述】:

刚接触 Unity,但学习很快。

我有一个生成器,它是一个用于生成气球的空游戏对象。生成的气球对象应用了一个跟随航路点的移动脚本。

我遇到的问题是我无法单击并将航路点(也是空的游戏对象)拖到公共变量上,如果气球首先添加到游戏层次结构中,我只能这样做,但我'我生成了应用了脚本的预制件,因为我不希望它出现在游戏中。如果我先将预制件添加到游戏中,我可以将路径点设置到游戏对象。

我该如何解决这个问题,以便能够将航点游戏对象添加到资产中的预制件中?

【问题讨论】:

  • 嗨!我认为您应该前往 Unity Q&A 页面。 This 应该回答你的问题。本质上,您应该以编程方式设置通常通过检查器设置的属性,无论您在代码中实例化 GO 的位置​​。

标签: unity3d


【解决方案1】:

你可以在移动脚本中使用这个方法:

public void SetWayPoints(Transform[] waypoints)
{
    this.wayPoints = waypoints;
}

当您实例化您的预制件时,只需获取组件并设置路径点;

GameObject baloon = Instantiate(baloonPrefab) as GameObject;
var movementScript = baloon.GetComponent<Movement>();
if(movementScript != null)
{
    movementScript.SetWayPoints(waypoints);
}

请注意,上面的代码只是一个示例来说明执行它的方法。您的脚本可能会根据您对航点的实施而有所不同。我假设航点是移动脚本中的一组变换,气球一个接一个地跟随它。此外,spawner 类具有层次结构中航点的引用,您只需从 spawner 传递该数组。

希望这会有所帮助。 如果您有任何问题,请告诉我。

【讨论】:

  • 啊,我明白这是怎么回事了。我现在试一试。是的,航点是一个变换数组。
  • 太好了!现在可以工作了。感激不尽。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多