Unity:实例化的预制克隆不在游戏视图中呈现,但只有在先前的实例化成功之后

问题描述 投票:0回答:0

我正在开发一款名为“保护广场”的小型 2D 游戏,顾名思义,玩家必须通过加电保护广场免受圆形敌人的攻击,控制广场本身,并控制用于偏转敌人的桨。我目前正在开发一种无尽模式,随着玩家的前进,关卡会不断地从手工制作的预制件中生成,但我遇到了一个问题。在成功实例化 4 到 5 个段(预制件)后,未来的段虽然仍在实例化,但在游戏视图中是不可见的。此功能仍在进行中,所以目前我只有两个预制件片段,并且在关卡开始时,两个预制件都正确实例化,但在达到 4 到 5 段阈值后,之前的预制件相同正确实例化变得不可见。一旦这种情况发生在一个预制件上,它就会发生在所有未来的预制件上,但碰撞仍然会按预期进行。尽管在游戏视图中是不可见的,但预制件在编辑器中显示正常。我曾尝试保存我的游戏并重新启动 Unity,但除此之外,我对导致此问题的原因或如何排除故障和修复它一无所知。我在下面包含了我的关卡生成脚本,尽管我怀疑脚本是问题所在,因为即使是有问题的预制件也会在正确的位置实例化。任何帮助或见解将不胜感激。

谢谢, CT

    using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class LevelSpawner : MonoBehaviour
{
    public GameObject[] levelPrefabs; // Array of level prefabs
    public Transform square; // Reference to the square object
    public float triggerDistance; // Distance at which to trigger the next level piece
    public Transform startingSpawnPoint; // Spawn point of the starting piece
 
    private Transform lastSpawnPoint; // Last spawn point
 
    void Start()
    {
        lastSpawnPoint = startingSpawnPoint;
    }
 
    void Update()
    {
        // Check if the square is close enough to the last spawn point to trigger the next level piece
        if (Vector2.Distance(square.position, lastSpawnPoint.position) <= triggerDistance)
        {
            // Select a random level prefab
            int index = Random.Range(0, levelPrefabs.Length);
            GameObject levelPrefab = levelPrefabs[index];
 
            // Determine the position for instantiating the new level piece
            Vector3 spawnPosition = lastSpawnPoint.position;
 
            // Instantiate the level prefab at the spawn position
            GameObject newLevelPiece = Instantiate(levelPrefab, spawnPosition, Quaternion.identity);
 
            // Update the last spawn point
            lastSpawnPoint = newLevelPiece.transform.Find("SpawnPoint");
        }
    }
}
unity3d 2d instantiation
© www.soinside.com 2019 - 2024. All rights reserved.