文档

Unity Engine

Unity Engine

属性路径

Understand the role of property paths and the performance considerations when using them.
阅读时间3 分钟最后更新于 1 个月前

属性路径是描述属性在容器对象中的位置的字符串。

概念

可以使用属性路径获取或设置特定路径下的对象的数据,或接受对象子属性上的访问者。
属性路径是由字符串构成的,用于从一个根对象中解析出特定的属性实例。例如,路径
foo.bar.baz[12]
解析
bar
容器内
baz
列表容器的第 13 个元素,该元素嵌套在
foo
容器内。
要创建和操作属性路径,请使用
Unity.Properties.PropertyPath
类。
您可以使用属性路径来执行以下操作:
  • 获取或设置特定路径下的对象的数据
  • 接受对象的子属性上的访问者

性能注意事项

Unity.Properties.PropertyPath
是不可变的结构类型。从字符串构造属性路径时,会因为提取子字符串而发生内存分配。
下表列出了从字符串构建属性路径时的分配行为:

String

长度

分配

分配原因

"Path"
10按原样使用字符串。
"Path.To"
22将字符串拆分为两部分。
"Path.To[2]"
33将字符串拆分为两部分并提取索引。
"Path.To[2].My"
44
"Path.To[2].My.Value"
56为附加部分分配数组。
下表列出了从附加部分构建属性路径时的分配行为:

String

长度

分配

分配原因

PropertyPath.FromName("Path")
10
PropertyPath.AppendName(previous, "To")
20
PropertyPath.AppendIndex(previous, 2)
30
PropertyPath.AppendName(previous, "My")
40
PropertyPath.AppendName(previous, "Value")
51为附加部分分配数组。
要优化性能并避免进行内存分配:
  • 在启动程序期间初始化和缓存属性路径。
  • 组合或附加属性路径部分(最多四个部分),而不是从字符串构建。

其他资源