2022 Graphics & GamesAccessibility & Inclusion
WWDC22 · 16 min · Graphics & Games / Accessibility & Inclusion
Add accessibility to your Unity games
Learn how you can make your Unity games accessible on Apple platforms using our open source Accessibility plug-in. Follow along as we add support for assistive technologies like VoiceOver and Switch Control to a sample Unity game project. We’ll show you how you can automatically scale text with Dynamic Type, support interface accommodations like reduced transparency or increased contrast, and more.
Watch at developer.apple.com ↗Code shown on screen · 5 snippets
PlayingCard enum
public enum PlayingCard
{
AceOfSpade,
AceOfClubs,
AceOfDiamonds
} AccessibleCard class
using Apple.Accessibility;
public class AccessibleCard : MonoBehaviour
{
public PlayingCard cardType;
public bool isCovered;
void Start()
{
var accessibilityNode = GetComponent<AccessibilityNode>();
accessibilityNode.accessibilityValueDelegate = () => {
if (isCovered) {
return "covered";
}
if (cardType == PlayingCard.AceOfSpades) {
return "Ace of Spades";
}
}
}
} DynamicCardFaces
public class DynamicCardFaces : MonoBehaviour
{
public Material RegularMaterial;
public Material LargeMaterial;
void OnEnable()
{
AccessibilitySettings.onPreferredTextSizesChanged += _settingsChanged;
}
void _settingsChanged()
{
var shouldUseLarge = AccessibilitySettings.PreferredContentSizeCategory >=
ContentSizeCategory.AccessibilityMedium;
GetComponent<Renderer>().material = shouldUseLarge ? RegularMaterial :
LargeMaterial;
}
} Dynamic Type
using UnityEngine.UI;
public class DynamicTextSize : MonoBehaviour
{
int originalSize;
void Start()
{
originalSize = GetComponent<Text>().textSize;
}
void OnEnable()
{
AccessibilitySettings.onPreferredTextSizesChanged += _settingsChanged;
}
void _settingsChanged()
{
GetComponent<Text>().textSize = (int)(originalSize *
AccessibilitySettings.PreferredContentSizeMultiplier);
}
} Reduce motion
using Apple.Accessibility;
public class CardController : MonoBehaviour
{
public void Flip()
{
var reduceMotionOn = !AccessibilitySettings.IsReduceMotionEnabled;
if (!reduceMotionOn)
{
StartCoroutine(Animate());
}
else
{
transform.rotation = Quaternion.identify;
}
}
IEnumerator Animate()
{
}
} Resources
Related sessions
-
27 min