Skip to content

Commit 19248d5

Browse files
fix logic to get active platform settings object to work with build profiles
1 parent 4f0179e commit 19248d5

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

Packages/com.unity.inputsystem/InputSystem/Editor/Settings/EditorPlayerSettingHelpers.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#if UNITY_EDITOR
22
using System;
33
using System.Linq;
4+
using System.Reflection;
45
using UnityEditor;
6+
using UnityEditor.Build.Profile;
57

68
namespace UnityEngine.InputSystem.Editor
79
{
@@ -154,7 +156,20 @@ private static int TupleToActiveInputHandler((bool newSystemEnabled, bool oldSys
154156

155157
private static SerializedProperty GetPropertyOrNull(string name)
156158
{
157-
var playerSettings = Resources.FindObjectsOfTypeAll<PlayerSettings>().FirstOrDefault();
159+
// HOTFIX: the code below works around an issue causing an infinite reimport loop
160+
// this will be replaced by a call to an API in the editor instead of using reflection once it is available
161+
var buildProfileType = typeof(BuildProfile);
162+
var globalPlayerSettingsField = buildProfileType.GetField("s_GlobalPlayerSettings", BindingFlags.Static | BindingFlags.NonPublic);
163+
var playerSettings = (PlayerSettings)globalPlayerSettingsField.GetValue(null);
164+
var activeBuildProfile = BuildProfile.GetActiveBuildProfile();
165+
if (activeBuildProfile != null)
166+
{
167+
var playerSettingsOverrideField = buildProfileType.GetField("m_PlayerSettings", BindingFlags.Instance | BindingFlags.NonPublic);
168+
var playerSettingsOverride = (PlayerSettings)playerSettingsOverrideField.GetValue(activeBuildProfile);
169+
if (playerSettingsOverride != null)
170+
playerSettings = playerSettingsOverride;
171+
}
172+
// HOTFIX ends
158173
if (playerSettings == null)
159174
return null;
160175
var playerSettingsObject = new SerializedObject(playerSettings);

0 commit comments

Comments
 (0)