Skip to content
This repository was archived by the owner on May 9, 2023. It is now read-only.

Commit 67f9f74

Browse files
committed
Handle Unity 2021+ InputField.onEndEdit change
1 parent 7a59f9a commit 67f9f74

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

src/Core/Utility/UnityHelpers.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22
using System.Collections.Generic;
33
using System.Globalization;
44
using System.Linq;
5+
using System.Reflection;
56
using System.Text;
67
using UnityEngine;
78
using UnityEngine.Events;
9+
using UnityEngine.UI;
810
using Object = UnityEngine.Object;
911

1012
// Project-wide namespace for accessibility
@@ -107,5 +109,16 @@ public static Color ToColor(this string _string)
107109

108110
return color;
109111
}
112+
113+
private static PropertyInfo onEndEdit;
114+
115+
public static UnityEvent<string> GetOnEndEdit(this InputField _this)
116+
{
117+
if (onEndEdit == null)
118+
onEndEdit = typeof(InputField).GetProperty("onEndEdit")
119+
?? throw new Exception("Could not get InputField.onEndEdit property!");
120+
121+
return onEndEdit.GetValue(_this, null).TryCast<UnityEvent<string>>();
122+
}
110123
}
111124
}

src/UI/Inspectors/GameObjectWidgets/GameObjectControls.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ private void ConstructTopInfo()
468468
//UIFactory.SetLayoutElement(pathApplyBtn.Component.gameObject, minHeight: 25, minWidth: 120);
469469
//pathApplyBtn.OnClick += () => { OnPathEndEdit(PathInput.Text); };
470470

471-
PathInput.Component.onEndEdit.AddListener((string val) => { OnPathEndEdit(val); });
471+
PathInput.Component.GetOnEndEdit().AddListener((string val) => { OnPathEndEdit(val); });
472472

473473
// Title and update row
474474

@@ -484,7 +484,7 @@ private void ConstructTopInfo()
484484
NameInput = UIFactory.CreateInputField(titleRow, "NameInput", "untitled");
485485
UIFactory.SetLayoutElement(NameInput.Component.gameObject, minHeight: 30, minWidth: 100, flexibleWidth: 9999);
486486
NameInput.Component.textComponent.fontSize = 15;
487-
NameInput.Component.onEndEdit.AddListener((string val) => { OnNameEndEdit(val); });
487+
NameInput.Component.GetOnEndEdit().AddListener((string val) => { OnNameEndEdit(val); });
488488

489489
// second row (toggles, instanceID, tag, buttons)
490490

@@ -521,7 +521,7 @@ private void ConstructTopInfo()
521521
TagInput = UIFactory.CreateInputField(secondRow, "TagInput", "none");
522522
UIFactory.SetLayoutElement(TagInput.Component.gameObject, minHeight: 25, minWidth: 100, flexibleWidth: 999);
523523
TagInput.Component.textComponent.color = Color.white;
524-
TagInput.Component.onEndEdit.AddListener((string val) => { OnTagEndEdit(val); });
524+
TagInput.Component.GetOnEndEdit().AddListener((string val) => { OnTagEndEdit(val); });
525525

526526
// Instantiate
527527
var instantiateBtn = UIFactory.CreateButton(secondRow, "InstantiateBtn", "Instantiate", new Color(0.2f, 0.2f, 0.2f));
@@ -644,7 +644,7 @@ private TransformControl AddTransformRow(GameObject transformGroup, string title
644644
var inputField = UIFactory.CreateInputField(rowObj, "InputField", "...");
645645
UIFactory.SetLayoutElement(inputField.Component.gameObject, minHeight: 25, minWidth: 100, flexibleWidth: 999);
646646

647-
inputField.Component.onEndEdit.AddListener((string value) => { OnTransformInputEndEdit(type, value); });
647+
inputField.Component.GetOnEndEdit().AddListener((string value) => { OnTransformInputEndEdit(type, value); });
648648

649649
var control = new TransformControl(type, inputField);
650650

src/UI/UIManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ private static void CreateTopNavBar()
378378
timeInput = UIFactory.CreateInputField(navbarPanel, "TimeInput", "timeScale");
379379
UIFactory.SetLayoutElement(timeInput.Component.gameObject, minHeight: 25, minWidth: 40);
380380
timeInput.Text = Time.timeScale.ToString("F2");
381-
timeInput.Component.onEndEdit.AddListener(OnTimeInputEndEdit);
381+
timeInput.Component.GetOnEndEdit().AddListener(OnTimeInputEndEdit);
382382

383383
pauseBtn = UIFactory.CreateButton(navbarPanel, "PauseButton", "||", new Color(0.2f, 0.2f, 0.2f));
384384
UIFactory.SetLayoutElement(pauseBtn.Component.gameObject, minHeight: 25, minWidth: 25);

0 commit comments

Comments
 (0)