默认情况下,当__ GameObject__Unity 场景中的基础对象,可以表示角色、道具、风景、摄像机、路径点等。GameObject 的功能由所附的组件决定。更多信息
See in Glossary 在每次实例化绘制调用中都具有不同的变换时,Unity 会对这些 GameObject 进行实例化。要向实例添加更多变体,请修改着色器以添加逐实例的属性,例如颜色。表面着色器和顶点/片元着色器中都可以执行此操作。
自定义着色器不需要逐实例的数据,但需要实例 ID,因为世界矩阵需要实例 ID 才能正常运行。表面着色器会自动设置实例 ID,但自定义顶点和片元着色器不会。要设置自定义顶点和片元着色器的 ID,请在着色器开头使用 UNITY_SETUP_INSTANCE_ID。如需相关操作示例,请参阅顶点和片元着色器。
声明实例化属性时,Unity 会从 GameObject 上设置的 MaterialPropertyBlock 对象中收集所有的属性值,并将它们放到单个绘制调用中。如需了解如何使用 MaterialPropertyBlock 对象在运行时设置逐实例数据的示例,请参阅在运行时更改逐实例数据。
将逐实例数据添加到多通道着色器时,请记住以下几点:
使用复数逐实例属性时,不需将所有这些属性填入 MaterialPropertyBlock。同样地,如果某个实例缺少属性,Unity 会从引用的材质中获取默认值。如果材质中没有对应属性的默认值,Unity 会将值设为 0。请勿在 MaterialPropertyBlock 中放置非实例化属性,因为这会禁用实例化。请为非实例化属性创建不同的材质。