我正在开发一款名为“保护广场”的小型 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");
}
}
}