private void CreateUI()
{
if (canvas == null)
{
log.LogMessage(" ");
log.LogMessage("Creating UI Elements");
// Create a GameObject with a Canvas
canvas = instance.createUICanvas();
Object.DontDestroyOnLoad(canvas);
// Add a Panel to the Canvas. See createUIPanel for why we pass height/width as string
uiPanel = instance.createUIPanel(canvas, "550", "200", null);
// This is how we'll hook mouse Events for window dragging
EventTrigger comp1 = new EventTrigger(uiPanel.AddComponent(UnhollowerRuntimeLib.Il2CppType.Of <EventTrigger>()).Pointer);
WindowDragHandler comp2 = new WindowDragHandler(uiPanel.AddComponent(UnhollowerRuntimeLib.Il2CppType.Of <WindowDragHandler>()).Pointer);
Image panelImage = uiPanel.GetComponent <Image>();
panelImage.color = instance.HTMLString2Color("#2D2D30FF").Unbox <Color32>();
#region [Panel Elements]
// NOTE: Elements are spaced in increments/decrements of 35 in localPosition
#region [Add a Button]
Sprite btnSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#7AB900FF"));
GameObject uiButton = instance.createUIButton(uiPanel, btnSprite);
uiButton.GetComponent <RectTransform>().localPosition = new Vector3(0, 250, 0);
#endregion
#region [Add a Toggle]
Sprite toggleBgSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#3E3E42FF"));
Sprite toggleSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#7AB900FF"));
GameObject uiToggle = instance.createUIToggle(uiPanel, toggleBgSprite, toggleSprite);
uiToggle.GetComponentInChildren <Text>().color = Color.white;
uiToggle.GetComponentInChildren <Toggle>().isOn = false;
uiToggle.GetComponent <RectTransform>().localPosition = new Vector3(0, 215, 0);
#endregion
#region [Add a Slider]
Sprite sliderBgSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#9E9E9EFF"));
Sprite sliderFillSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#7AB900FF"));
Sprite sliderKnobSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#191919FF"));
GameObject uiSlider = instance.createUISlider(uiPanel, sliderBgSprite, sliderFillSprite, sliderKnobSprite);
uiSlider.GetComponentInChildren <Slider>().value = 0.5f;
uiSlider.GetComponent <RectTransform>().localPosition = new Vector3(0, 185, 0);
#endregion
#region [Add a Text (Label)]
Sprite txtBgSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#7AB900FF"));
GameObject uiText = instance.createUIText(uiPanel, txtBgSprite, "#FFFFFFFF");
uiText.GetComponent <Text>().text = "This is a new Text Label";
uiText.GetComponent <RectTransform>().localPosition = new Vector3(0, 150, 0);
#endregion
#region [Add a InputField]
Sprite inputFieldSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#7AB900FF"));
GameObject uiInputField = instance.createUIInputField(uiPanel, inputFieldSprite, "#000000FF");
#region [Dev Note]
// The following line is odd. It sets the text but doesn't display it, WTF? The default child object PlaceHolder
// has Text component but Unhollower thinks it's a UnityEngine.Graphic?
// uiInputField.transform.GetChild(0).gameObject.GetComponent<Text>().text = "Search...";
// Checked in Unity Editor too, it's definately Text, why does unhollower think it's Graphic?
//
// We'll just use the InputField component directly. It works, but PlaceHolder is nice...
#endregion
uiInputField.GetComponent <InputField>().text = "Some Input Field...";
uiInputField.GetComponent <RectTransform>().localPosition = new Vector3(0, 115, 0);
#endregion
#region [Add a DropDown]
// NOTE: This wierd, it does it's thing and work's but then the rest on the UI disappears... hmmm... :/
Sprite dropdownBgSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#7AB900FF"));
Sprite dropdownScrollbarSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#3E3E42FF"));
Sprite dropdownDropDownSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#252526FF"));
Sprite dropdownCheckmarkSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#7AB900FF"));
Sprite dropdownMaskSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#1E1E1EFF"));
GameObject uiDropDown = instance.createUIDropDown(uiPanel, dropdownBgSprite, dropdownScrollbarSprite, dropdownDropDownSprite, dropdownCheckmarkSprite, dropdownMaskSprite);
Object.DontDestroyOnLoad(uiDropDown);
uiDropDown.GetComponent <RectTransform>().localPosition = new Vector3(0, 75, 0);
#endregion
#region [Add a ScrollView]
Sprite scrollviewBgSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#9E9E9EFF"));
Sprite scrollviewScrollbarSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#3E3E42FF"));
Sprite scrollviewMaskSprite = instance.createSpriteFrmTexture(instance.createDefaultTexture("#3E3E42FF"));
GameObject uiScrollView = instance.createUIScrollView(uiPanel, scrollviewBgSprite, scrollviewMaskSprite, scrollviewScrollbarSprite);
// Set some content
GameObject content = uiScrollView.GetComponent <ScrollRect>().content.gameObject;
GameObject contentTextObj = instance.createUIText(content, scrollviewBgSprite, "#FFFFFFFF");
contentTextObj.GetComponent <Text>().text = "ScrollView Element";
contentTextObj.GetComponent <RectTransform>().localPosition = new Vector3(120, -50, 0);
uiScrollView.GetComponent <RectTransform>().localPosition = new Vector3(0, -75, 0);
#endregion
#region [Add a RawImage]
// Our Test Sprite from testBundle for UI RawImage Element
if (testAssetBundle != null && stompy != null)
{
log.LogMessage(" Trying to Load Test Sprite...");
stompy = testAssetBundle.LoadAsset <Sprite>("assets/tools/customassets/test assets/externaltexture.png");
if (stompy != null)
{
log.LogMessage(" Sprite Loaded!");
}
else
{
log.LogMessage(" Failed to Load Sprite!");
}
GameObject uiImage = instance.createUIRawImage(uiPanel, stompy);
uiImage.GetComponent <RectTransform>().localPosition = new Vector3(0, -220, 0);
uiImage.GetComponent <RectTransform>().localScale = new Vector3(0.3f, 0.3f);
}
else
{
log.LogMessage(" Skipping - Test AssetBundle Not Loaded!");
}
#endregion
#endregion
isVisible = true;
log.LogMessage("Complete!");
}
}