【问题标题】:Cloning objects in a way for all to behave the same以一种让所有人都表现相同的方式克隆对象
【发布时间】:2021-11-13 18:52:04
【问题描述】:

是否可以在 Unity 中以所有克隆对象的行为相同的方式实例化预制件?

例如,如果我旋转一个,则所有副本必须旋转相同,如果我更改颜色,则所有副本都必须获得相同的颜色

我确实知道如何迭代数组并将操作应用于每个数组,但我想知道是否有更简单或更自动化的方法

谢谢!!

【问题讨论】:

  • if i rotate one, if i change the color 你是怎么做到的?
  • 简单的方法和相关的是使用静态变量。在这种情况下,它们属于类型而不属于实例,因此更改值会影响它们。
  • @fafase 这对于一个值来说是正确的,但对于通过 Unity 的属性进行的实际更改却不是真的......不知何故你仍然必须将静态分配回所有实例

标签: c# unity3d clone instantiation


【解决方案1】:

正如您所提到的,实现您想要实现的目标的一个好方法是使用管理器来处理逻辑,然后将响应操作发送到它正在管理的所有对象。如果您不想使用管理器,则可以使用对象的一些原始实例来处理移动、旋转、缩放等逻辑,并将所有其他克隆作为子对象。

只要原始对象发生变化,原始对象的所有子克隆都会移动、旋转和缩放。一个需要注意的是,实例化时的克隆将是相对于父对象的位置、旋转和缩放。您可以通过使用旋转Quaternion.Identity 实例化对象来确保旋转相同。如果您愿意,可以对比例和位置采取类似的方法。至于颜色,只需设置一个材质并编辑sharedmaterial,它会将对象的所有实例的颜色设置为您设置的任何颜色。

我不相信所有这些更改都适用于所有克隆的内置方式。实现一个管理器来保持一个结构来保存和更新每个克隆会更干净。如果您希望克隆模仿的只是变换数据和颜色,则可以按照我提到的方式完成。但是,并非所有内容都可以通过这种方式进行更新,因此您在没有经理的情况下可以做的事情受到限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 2019-04-20
    • 2014-07-16
    • 2011-02-15
    • 1970-01-01
    相关资源
    最近更新 更多