在此示例中
Color
的元数据值为 0x00001000
。5
。0x1000
开始。由于最高位未设置,因此回退到默认值的访问器宏不会访问 unity_DOTSInstanceData
。这意味着
c0
将包含来自 unity_DOTSInstanceData
地址 0x1000
的值。c1
将包含常规材质属性 Color 的值,如果 Color 属性不存在,则会导致编译错误。c2
将包含 (1, 2, 3, 4)
,因为这是作为显式默认值传递的。void ExampleConstant()
{
// rawMetadataValue will contain 0x00001000
uint rawMetadataValue = UNITY_DOTS_INSTANCED_METADATA_NAME(float4, Color);
float4 c0 = UNITY_ACCESS_DOTS_INSTANCED_PROP(float4, Color);
float4 c1 = UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float4, Color);
float4 c2 = UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_CUSTOM_DEFAULT(float4, Color, float4(1, 2, 3, 4));
}