Unity-项目面板中缺少带有子元素扩展按钮的预制

问题描述

我一直在跟着课程学习。在此过程中,添加一个名为“ Path(0)”的GameObject,该GameObject然后具有三个子GameObject(“ Waypoint(0/1/2)”)。在本教程中,该家伙将父GameObject“ Path(0)”拖到“项目”面板中名为“路径”的文件夹中,以创建预制件。所示的预制件带有将其展开的手柄。然后,他展开该预制件以查看可拖动到检查器中的子元素,如下所示(展开按钮用红色框突出显示

enter image description here

执行这些操作时,“项目”面板的“路径”预制件上没有展开按钮(见下文)

enter image description here

为什么我的“预制”对象在“项目”面板中没有这些扩展按钮?

基本上,他的工作是用敌方预制件(附在下面)创建一个脚本组件。子对象“航路点”是敌人将要移动的场景中的标记。我在youtube上上传了教程的一部分,问题解决后我将删除该教程。如果YouTube删除它。请帮助我完成本教程。

https://youtu.be/NGpaHSmktic

公共类EnemyPathing:MonoBehavIoUr { [Serializefield]列出航点; [Serializefield] float 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);
    }
}

解决方法

这一定是因为您没有相同的统一版本。

只需双击Path0,它将打开它。在“层次结构”选项卡中,您将看到资产及其元素。 如果将Path0拖回场景,它的子级也会出现。

这是因为您不应该将子资产拖离其父资产。 我不知道它在您的教程中的用法,但是如果需要,您也可以通过将其拖动到文件夹中(双击Path0之后)来制作子预制件。

编辑:

我真的不知道该怎么做才能拥有完全相同的情况,但这是另一种方式:

-创建一个标签“ waypoint”,并将其设置为Waypoint0,Waypoint1和Waypoint2(在您的资产中,或在创建资产之前)。

-在EnemyPathing.cs的Start方法中添加以下内容:

this.waypoints = new List<Transform>();
foreach(GameObject g in GameObject.FindGameObjectsWithTag("waypoint"))
{
    waypoints.Add(g.transform);
}

因此,即使场景中的点数少于或少于3,它也会自动添加您的航路点。