public static GameObject CreateDebugButton(Transform parent, string btnLabel, Vector3 position, Action onClickFunction, bool rotateToCamera = true) { GameObject btnObj = new GameObject("DebugButton_" + btnLabel); DebugButton btnDebugComponent = btnObj.AddComponent <DebugButton>(); BoxCollider btnCollider = btnObj.AddComponent <BoxCollider>(); btnObj.layer = LC_Utils.GetSettings().ButtonsLayerMask; if (rotateToCamera) { btnObj.AddComponent <LookToCamera>().RotateY = true; } if (parent != null) { btnObj.transform.parent = parent; } if (onClickFunction != null) { btnDebugComponent.OnClickAction = onClickFunction; } btnCollider.isTrigger = true; btnCollider.size = LC_Utils.GetDefaultButtonSize(); btnObj.transform.position = position; TextMesh buttonLabel = CreateWorldText( text: btnLabel, parent: btnObj.transform, localPosition: Vector3.zero, color: Color.black, textAlignment: TextAlignment.Center, textAnchor: TextAnchor.MiddleCenter, fontSize: LC_Utils.GetDefaultFontSize() ); GameObject buttonBackground = CreateWorldSprite( parent: btnObj.transform, name: "DebugButton_Background", sprite: LC_Utils.GetDefaultSpriteSquare(), position: Vector3.zero, localScale: LC_Utils.GetDefaultButtonSize(), color: LC_Utils.GetDefaultButtonColor() ); CreateWorldSprite( parent: btnObj.transform, name: "DebugButton_BackgroundBorder", sprite: LC_Utils.GetDefaultSpriteSquare(), position: Vector3.zero + btnObj.transform.forward * 0.01f, localScale: LC_Utils.GetDefaultButtonSize() + new Vector3(.05f, .05f, .05f), color: Color.gray ); btnDebugComponent.buttonLabel = buttonLabel; btnDebugComponent.backgroundSprite = buttonBackground.GetComponent <SpriteRenderer>(); btnDebugComponent.backgroundColor = LC_Utils.GetDefaultButtonColor(); btnDebugComponent.backgroundOnClickColor = LC_Utils.GetDefaultButtonColorOnClick(); btnDebugComponent.backgroundOnOverColor = LC_Utils.GetDefaultButtonColorOnOver(); btnDebugComponent.SetButtonLabelText(btnLabel); LC_Debug.RuntimeDebugObjectsManager.debugObjects.Add(btnObj); return(btnObj); }