You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity 2D C# 卡车生成货箱无法正确设置父对象问题求助

问题排查和修复方案

核心问题点如下:

  • Instantiate调用后未接收返回的新生成实例,你当前代码修改的是场景中原始的crateUpgrade1对象的父级,而非新生成的货箱对象。由于GameObject.Find只会返回场景中第一个匹配名称的对象,因此第一辆卡车绑定了原始货箱后,其余卡车拿到的crateUpgrade1已经是第一辆卡车的子对象,重复设置父级不会生效,也不会生成新的货箱绑定到自身。
  • 不应该使用GameObject.Find加载货箱资源,正确做法是将货箱预制体直接赋值到脚本的对应public字段,避免查找误差和性能损耗。
  • 当前逻辑会直接修改原始货箱对象的层级,不符合运行时生成对象的规范,也会导致原始资源被意外修改。
修正后的代码
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;
   // 提前在Inspector面板将对应货箱预制体拖入这四个字段,无需代码查找
   public GameObject crateUpgrade1;
   public GameObject crateUpgrade2;
   public GameObject crateUpgrade3;
   public GameObject crateUpgrade4;

   private void Start()
   {
      dropoffLocation = new Vector3(3.5f, -7f, 0);
      // 删除所有GameObject.Find逻辑

      if (crateUpgrade == 1)
      {
         // 接收生成的新货箱实例,传入transform直接完成父级绑定
         GameObject newCrate = Instantiate(crateUpgrade1, transform);
         // 按需设置货箱相对卡车的坐标
         newCrate.transform.localPosition = Vector3.zero;
      }
   }

   // 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);
      }
   }
}
补充注意点
  • 直接在Instantiate的第二个参数传入父对象,生成时直接完成绑定,不需要额外调用transform.parent赋值。
  • 后续如果要操作生成的货箱,直接操作生成的实例变量即可,不要修改原始的crateUpgrade1预制体对象。
  • 如果你一定要用场景内的对象作为模板,建议提前将货箱模板设置为禁用状态,避免误操作。

内容的提问来源于stack exchange,提问作者yassin eltaramsi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:54:01