[英]Unity 2D C# - Parenting not working question for my game
所以我试图制作一个自上而下的大亨游戏,卡车给你板条箱,你卖板条箱换钱。 我有一个卡车脚本,除了第一部分外,它工作得很好。 所以我编码它,当卡车产生时 2 个板条箱产生并且是卡车游戏对象的父级,问题是当我运行游戏时,对象产生等等,但它们不是卡车的父级,我现场有 6 辆卡车,但只有一辆卡车将其板条箱设置为父级。 有人可以帮忙吗?
代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CarScript : MonoBehaviour
{
private float speed = 0.01f;
private Vector3 dropoffLocation;
private bool hasCrates = true;
private float dropCratesCooldown = 500f;
GameObject cratess;
private float crateUpgrade = 1;
public GameObject crateUpgrade1;
public GameObject crateUpgrade2;
public GameObject crateUpgrade3;
public GameObject crateUpgrade4;
private void Start()
{
dropoffLocation = new Vector3(3.5f, -7f, 0);
crateUpgrade1 = GameObject.Find("Boxes In Truck 1");
crateUpgrade2 = GameObject.Find("Boxes In Truck 2");
crateUpgrade3 = GameObject.Find("Boxes In Truck 3");
crateUpgrade4 = GameObject.Find("Boxes In Truck max");
if (crateUpgrade == 1)
{
Instantiate(crateUpgrade1);
crateUpgrade1.transform.parent = transform;
//crateUpgrade1.transform.position = new Vector3(0, 0, 0);
}
}
// Update is called once per frame
void Update()
{
if (transform.position.x > 40)
{
Destroy(gameObject);
}
if (transform.position.x > dropoffLocation.x && hasCrates)
{
dropCratesCooldown--;
if (dropCratesCooldown < 0)
{
cratess = transform.GetChild(0).gameObject;
Destroy(cratess);
hasCrates = false;
}
transform.Translate(0, 0, 0);
}
else
{
transform.Translate(speed, 0, 0);
}
}
}
btw unity 甚至没有告诉我这是一个错误
提前致谢!
Instantiate
返回实例化的游戏对象。 这就是您要指定为卡车子项的内容。 按照您现在的做法,您只需继续分配和重新分配crateUpgrade1
的父项。 这就是为什么只有您的一辆卡车配备了一个板条箱。
应该是这样:
GameObject crate = Instantiate(crateUpgrade1);
crate.transform.parent = transform;
另一件事; 实例化新对象的标准方法是在项目中创建一个预制资产,然后将对其的引用分配给CarScript
,然后实例化该预制的实例。 所以crateUpgrade1 = GameObject.Find("Boxes In Truck 1");
部分有点奇怪。
这是通常的做法
public class CarScript : MonoBehaviour
{
// Assign this to your "crate" prefab in the Unity Inspector
[SerializeField] private GameObject cratePrefab;
private void Start()
{
if (crateUpgrade == 1)
{
GameObject crate = Instantiate(this.cratePrefab);
crate.transform.parent = transform;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.