Unity - 项目面板中缺少子元素扩展按钮的预制件
Posted
技术标签:
【中文标题】Unity - 项目面板中缺少子元素扩展按钮的预制件【英文标题】:Unity - Prefab with Sub-Elements Expansion Button Missing in Project Panel 【发布时间】:2021-01-05 23:06:34 【问题描述】:我一直在关注一门课程。在本课程中,添加了一个名为“Path (0)”的 GameObject,该 GameObject 则具有三个子 GameObject(“Waypoint (0/1/2)”)。在教程中,这家伙将父游戏对象“Path (0)”拖到 Project 面板中名为 Paths 的文件夹中以创建预制件。这个预制件显示有一个手柄来扩展它。然后他展开这个 prefab 以查看可以拖入 Inspector 的子元素,如下图所示(展开按钮以红色框突出显示)
当我执行这些操作时,项目面板的“路径”预制件上没有展开按钮(见下文)
为什么我的项目面板中的预制对象没有这些扩展按钮?
基本上,他所做的就是用敌人预制件创建一个脚本组件。(附在下面)。子对象“航路点”是场景中敌人将移动的标记。我在youtube上上传了一部分教程,一旦问题解决我将删除。如果 youtube 没有删除它。请帮助我完成教程的一半。
https://youtu.be/NGpaHSmktic
公共类 EnemyPathing : MonoBehaviour [SerializeField] 列出航点; [SerializeField] 浮动 moveSpeed = 2f; int waypointIndex = 0;
void Start() transform.position = waypoints[waypointIndex].transform.position; // Update is called once per frame void Update() Move(); private void Move() if (waypointIndex < -waypoints.Count - 1) var targetPosition = waypoints[waypointIndex].transform.position; // this is where we go to var movementThisFrame = moveSpeed * Time.deltaTime; // this is how fast we want to go to transform.position = Vector2.MoveTowards(transform.position, targetPosition, movementThisFrame); if (transform.position == targetPosition) waypointIndex++; else Destroy(gameObject);
【问题讨论】:
【参考方案1】:一定是因为你没有相同的unity版本。
只需双击 Path0 即可打开它。在 Hierarchy 选项卡中,您将看到资产及其元素。 如果将 Path0 拖回场景,它的子节点也会出现。
这是因为您不应该将子资产拖离其父资产。 我不知道它在您的教程中是如何使用的,但是如果需要,您也可以通过将其拖到文件夹中来制作一个子预制件(双击 Path0 后)。
编辑:
我真的不知道你可以做些什么来遇到完全相同的情况,但这里有另一种方法:
-创建标签“航点”并为航点0、航点1和航点2设置此标签(在您的资产中,或在创建之前)。
-在 EnemyPathing.cs 的 Start 方法中添加:
this.waypoints = new List<Transform>();
foreach(GameObject g in GameObject.FindGameObjectsWithTag("waypoint"))
waypoints.Add(g.transform);
因此,它会自动添加您的航点,即使您的场景中的航点多于或少于 3 个。
【讨论】:
我已经用一些信息更新了这个问题,可能会有所帮助。如果您能帮助我,我将不胜感激。谢谢。 非常感谢。生病尝试让你知道它是怎么回事。再次感谢您。以上是关于Unity - 项目面板中缺少子元素扩展按钮的预制件的主要内容,如果未能解决你的问题,请参考以下文章
使用 Typescript 在 Mongoose 中缺少子文档方法
Unity3d 4.6 GUI - 按钮单击脚本从预制中消失