Property paths
Understand the role of property paths and the performance considerations when using them.
Read time 2 minutesLast updated 7 days ago
Property paths are strings that describe the location of a property within a container object.
You can use property paths to get or set the data of an object at a specific path or accept a visitor on a sub-property of an object.
Property paths are constructed from strings and resolve a specific property instance from a root object. For example, the path resolves the 13th element of the list container within the container, which is nested inside the container.
foo.bar.baz[12]bazbarfooTo create and manipulate property paths, use the class.
Unity.Properties.PropertyPathYou can use property paths to do the following:
- Get or set the data of an object at a specific path.
- Accept a visitor on a sub-property of an object.
For an example of how to use property paths to accept a visitor on a sub-property of an object, refer to the Use to create a property visitor example.
PropertyVisitorPerformance considerations
Unity.Properties.PropertyPathThe following table lists the allocation behaviors when a property path is constructed from a string:
String | Length | Allocation behavior |
|---|---|---|
| 1 | No allocation: the entire path is a single segment and the original string is referenced as-is. |
| 2 | Two allocations: allocate two new substring instances for |
| 3 | Three allocations: substrings for |
| 4 | Four allocations: substrings for |
| 5 | Six allocations: substrings for |
A is an array of parts of type and four parts are inlined directly before allocating an array for any additional parts. The following table lists the allocation behaviors when a property path is constructed from parts:
PropertyPathPropertyPathPartString | Length | Allocation behavior |
|---|---|---|
| 1 | No allocation: uses the first inlined |
| 2 | No allocation: uses the second inlined |
| 3 | No allocation: uses the third inlined |
| 4 | No allocation: uses the fourth inlined |
| 5 | One allocation: allocates a new array to contain additional property path parts. |
To optimize performance and avoid allocating memory:
- Initialize and cache property paths during initialization routines.
- Combine or append property path parts instead of constructing it from a string, up to four parts.