unity3d - Unity - 如何在实例化的预制件上的数组中设置一个值
问题描述
我实例化了一些预制件并需要设置路径。路径节点的长度在 1 到 3 个部分之间。
public GameObject mb;
void Start()
{
GameObject planeIcon;
foreach (PlaneData p in PlaneManager.planesData)
{
if(p.route != 0)
{
planeIcon = Instantiate(iconPrefab);
planeIcon.GetComponent<Image>().sprite = Resources.Load<Sprite>(p.planeFilename + "_icon");
planeIcon.name = p.planeName;
planeIcon.GetComponent<AnimatePlane>().moveSpeed = p.planeSpeed;
planeIcon.GetComponent<AnimatePlane>().range = p.planeRange;
planeIcon.GetComponent<AnimatePlane>().pathNode[0] = mb;
}
这会引发 IndexOutOfRangeException: Index was outside the bounds of the array on last line
AnimatePlane 代码附加到上面实例化的预制件上
public class AnimatePlane : MonoBehaviour
{
public GameObject[] pathNode = new GameObject[3];
public float moveSpeed;
public int range;
// Use this for initialization
void Start()
{
Debug.Log("pathnode length: " + pathNode.Length);
CheckNode();
}
调试输出是 show pathnode length = 0 我假设我需要在 AnimatePlane 代码中以某种方式初始化数组,但想不出我缺少什么。谢谢
解决方案
嗨试试这个。
public GameObject mb;
void Start()
{
GameObject planeIcon;
foreach (PlaneData p in PlaneManager.planesData)
{
if(p.route != 0)
{
planeIcon = Instantiate(iconPrefab);
planeIcon.GetComponent<Image>().sprite = Resources.Load<Sprite>(p.planeFilename + "_icon");
planeIcon.name = p.planeName;
AnimatePlane plane = planetIcon.GetComponent<AnimatePlane>();
plane.moveSpeed = p.planeSpeed;
plane.range = p.planeRange;
plane.pathNode = new GameObject[3];
plane.pathNode[0] = mb;
}
推荐阅读
- python - 读入两个文件并用合并的字符串写入第三个文件
- reactjs - 如何在反应中改变 reactstrap 模态的样式?
- javascript - 如何在 java 脚本中获取用户输入并在页面上显示此输入?
- c - 在另一个 .c 文件上声明函数使浮点乘法始终为 0
- python - 识别和删除 pandas 时间序列中的无效时间步
- tags - 使用通用 ctags 支持编译 GNU Global
- kubernetes - 使用命令行等待 kubernetes 作业在失败/成功时完成
- haskell - 如何让 ghc 以不同于默认配置的方式调用链接器?
- python - seaborn 热图的数据准备
- sage - sage中获取有向图的关联矩阵时如何指定顶点顺序和边顺序?