unity3d - 如何在unity3d中阻止瓷砖在一定数量后产生
问题描述
我有一个生成无尽瓷砖(3D)的脚本,我希望它在某个数字(例如 100)之后停止,并且在最后一个瓷砖(第 100 个)结束时,我想生成另一个预制件,如门户。我不知道该怎么做。我在谷歌上找到的任何答案都无济于事。任何帮助深表感谢。
void Start()
{
nextTileLocation = startPoint;
nextTileRotation = Quaternion.identity;
for (int i = 0; i < initSpawnNum; ++i)
{
SpawnNextTile (i >= initNoObstacles);
}
}
public void SpawnNextTile(bool spawnObstacles = true)
{
var newTile = Instantiate (tile, nextTileLocation, nextTileRotation);
var nextTile = newTile.Find ("Next Spawn Point");
nextTileLocation = nextTile.position;
nextTileRotation = nextTile.rotation;
if (!spawnObstacles)
return;
var obstacleSpawnPoints = new List<GameObject> ();
foreach (Transform child in newTile) {
if (child.CompareTag ("ObstacleSpawn")) {
obstacleSpawnPoints.Add (child.gameObject);
}
}
if (obstacleSpawnPoints.Count > 0) {
var spawnPoint = obstacleSpawnPoints [Random.Range (0, obstacleSpawnPoints.Count)];
var spawnPos = spawnPoint.transform.position;
var newObstacle = Instantiate (obstacle, spawnPos, Quaternion.identity);
newObstacle.SetParent (spawnPoint.transform);
}
}
解决方案
你可以做一些事情,比如传入一个布尔值来告诉函数生成一个门户。
void Start()
{
nextTileLocation = startPoint;
nextTileRotation = Quaternion.identity;
for (int i = 0; i < initSpawnNum; ++i)
{
// Pass in true for the last tile
SpawnNextTile (i >= initNoObstacles, i == initSpawnNum - 1);
}
}
public void SpawnNextTile(bool spawnObstacles = true, bool shouldSpawnPortal = false)
{
//
}
编辑以显示将图块添加到列表中:
class YourScript : MonoBehaviour
{
private List<GameObject> tiles = new List<GameObject>();
private void SpawnNextTile(bool spawnObstacles = true, bool shouldSpawnPortal = false)
{
var newTile = Instantiate (tile, nextTileLocation, nextTileRotation);
tiles.Add(newTile);
// The rest of your code
}
}
推荐阅读
- xml - 将参数传递给在 Camel 中的 XML 中定义的 RecipientList
- node.js - 使用 nodemon 和 express 优雅关闭
- amazon-web-services - 如何在 aws cloud watch 中检查事件规则的日志?
- amazon-web-services - AWS Quicksight:如何从控件中禁用 [ALL] 值?
- python - 从 pandas .max() 中的多个对象中获取最大值
- unity3d - 为什么我不能在我的函数中更新 Unity Text 的值?
- c++ - 坚持使用 local_thread_storage 对象(std::aligned_storage)进行日志记录
- javascript - 数组到一个对象
- c# - 如何添加一个类来记录活动?
- arrays - NSFetchedResultsController 误解