Class VisionOSSortingGroup
Defines the drawing and input processing order for a group of GameObjects.
Implements
Inherited Members
Namespace: Unity.PolySpatial
Assembly: Unity.PolySpatial.dll
Syntax
[DisallowMultipleComponent]
public class VisionOSSortingGroup : MonoBehaviour, ISerializationCallbackReceiver
Remarks
Renderer instances on the GameObjects in the group, and optionally on any child GameObjects, are drawn in the specified order, starting with the lowest value. Thus objects with a higher order draw on top of those with a lower order. The sorting occurs in visionOS platform code and overrides other, Unity-defined renderer sorting methods, such as SortingGroup.
The specified order also determines the order in which members of the group capture user input. GameObjects with a higher order value capture input before any members of the group below them. GameObjects do not need a renderer object, but do need a Collider. This sorting does not change physics interactions, just input resolution.
A GameObject can only be a member of one visionOS sorting group. If you try to add a GameObject to a second group, the action is ignored.
Sorting groups have no effect on how renderers are sorted against objects outside the group. They only affect how objects inside the group are sorted relative to each other.
You should not change sorting groups frequently at runtime. Such changes can be expensive, especially if you have enable the Apply To Descendants option within the group members.
For additional information, refer to visionOS Sorting Groups.
Properties
DepthPass
Defines when depth is drawn with respect to color.
Declaration
public VisionOSSortingGroup.DepthPassType DepthPass { get; set; }
Property Value
Type | Description |
---|---|
VisionOSSortingGroup.DepthPassType |
Renderers
The members of this sort group.
Declaration
public ObservableList<VisionOSSortingGroup.RendererSorting> Renderers { get; set; }
Property Value
Type | Description |
---|---|
ObservableList<VisionOSSortingGroup.RendererSorting> |
Examples
The following examples illustrate how to add a new member to a sorting group at runtime and modify a member at runtime in a way that sends the changes to RealityKit.
using UnityEngine;
using Unity.PolySpatial;
using System.Collections.Generic;
public class ChangeSortGroup : MonoBehaviour
{
public VisionOSSortingGroup vosSortingGroup;
public void AddToSortingGroup(GameObject gameObject, int order)
{
ObservableList<VisionOSSortingGroup.RendererSorting> groupMembers = vosSortingGroup.Renderers;
var newMember = new VisionOSSortingGroup.RendererSorting();
newMember.Renderer = gameObject;
newMember.Order = order;
newMember.ApplyToDescendants = false;
groupMembers.Add(newMember)
}
public void UpdateRendererSortingOrder(int index, int order)
{
ObservableList<VisionOSSortingGroup.RendererSorting> groupMembers = vosSortingGroup.Renderers;
var groupMember = groupMembers[i];
groupMember.Order = order;
groupMembers[i] = groupMember;
}
}
Methods
OnAfterDeserialize()
Called after Unity deserializes this object
Declaration
public void OnAfterDeserialize()
OnBeforeSerialize()
Called before Unity serializes this object
Declaration
public void OnBeforeSerialize()