我在 Unity 上工作了一个月。 我是 Unity 和 C# 的新手,在 Unity 之前我工作过其他游戏引擎。 无论我在做什么无限跑游戏,我都写了随机道路生成器。 道路生成器运行良好,但我在更新道路时遇到问题。 我可以像这样手动更新道路。 我怎样才能自动更新它?

void Update()
{
     if(Input.GetKeyDown(KeyCode.A)) UpdateRoad();
}

我的 UpdateRoad 方法添加这样的道路(我正在使用对象池)。 我想在 Link Road、OnExitTrigger 或我不知道的东西之后更新。 我该怎么做?

在此处输入图片说明

#1楼 票数:1 已采纳

您需要实现对象池。

我建议您先进行对象设计,以便您可以进行测试。 或者,如果不使用,Unity3D 的库存 Blocks Primitive 作为您的预制件。 我希望你已经知道预制件。 是制作无限跑酷的一大关键。 实际上是制作任何类型游戏的主要核心。

Prefabs 是一个对象文件,您可以在其中实例化它。 因此,假设您将生成一个可步行的平面,然后生成一个坑。 您可能希望将它们堆叠在一起。

现在生成它们很容易。 你不想去更新? 方法是因为您很可能不会更新,但您将根据您的游戏逻辑进一步叠加正在发生的事情。

为了进一步理解这一点,Unity3D 已经制作了一个项目或完全详细的教程。 它可能是在 2D 中制作的,但如果您要将 Collider2D 更改为 Collider <-这对您的情况很重要,则它会是相同的。

https://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/infinite-runner

更新

您需要创建一个不可见的对象。 意思是触发器。 然后在触发器上调用你的方法 UpdateRoad();

https://unity3d.com/learn/tutorials/modules/beginner/physics/colliders-as-triggers

关于触发器的详细视频。

#2楼 票数:0

如果我正确理解您的需求,您可以创建 Empty Object,将其命名为 SpawnPoint,根据需要设置 Spawn Point 的位置(在相机视图之外),然后实例化道路的随机预制件。 关于 On TriggerExit - 它可用于破坏“旧路”。 但是为了让它正常工作,不要忘记为你的对象设置碰撞器和刚体。 不要添加 collider2D 或 Rigitbody2d,添加并使用 Box Collider 和 Rigitbody 组件

  ask by Valar Morghulis translate from so

未解决问题?本站智能推荐:

3回复

在Unity中创建无限循环延迟

我需要在Unity中创建一个无限循环而不使用主线程? 我看到了一些例子,但它并没有用: 我想添加一些延迟,例如2秒。 如果有人知道解决方案请帮助。
2回复

购买成功完成后,UnitySoomla得分未更新

我统一为Android实现了Soomla客栈应用程序购买,它可以正常工作,但购买成功完成后,我的分数没有更新。我设置了“ android.test.purchased”进行购买。 这是我的代码
1回复

如何在触发器上更新文本?

因此,我创建了一个游戏,其中直升机经过一个环。 所以我想做的是,当这架直升机通过圆环时,我希望GUI上的文本增量更新10次(这基本上是一个记分卡)。 谁能帮我编写脚本。 谢谢。
1回复

团结-无限跳跃

我在Unity 2D中遇到脚本问题,因为我的角色无限跳跃,能帮我吗(我是Unity的菜鸟)。 我尝试了一个布尔值的东西,但是没有结果...我在C#中的代码是: 谢谢你的帮助, Flo。
1回复

无限的预制虫

我为自己编写的2D游戏有一个简单的生成脚本,我想在特定时间段后生成一个对象。 我设法使它起作用,但是一个问题是对象不断产生。 我只希望该对象产生一次而不是无限量。 var myTimer : float = 5.0;var thePrefab : GameObject;function Up
2回复

如何在while循环中无限循环数?(Unity3D-unityscript)

我想循环播放,但是当我第四次单击它时,它会直接转到第一张图像。 我试过了yield WaitForSeconds,但是没有用。
1回复

更新功能无法正常工作

我正在开发一个简单的僵尸生存游戏。 该脚本附加在一个空的GameObject中,该对象充当玩家的健康状况。 #pragma strictvar health = 100;var attack = 10;var otherAttackDelay = 5;function Attack1 () {
2回复

运行时的Unity/NGUI更新列表

我想知道是否有人可以向我解释如何在运行时在Unity中更新列表? 比如我有一个咒语书,它在它3个法术,当我将它们拖动到我的行动吧,他们得到重新父它,我想要做的就是让每一个孩子的列表,动作条下变换, 我的问题是,如果我在更新中尝试以下操作,该在哪里实际执行此操作,它会多次添加其中的内容,由