interface in UnityEngine.UI
Implements interfaces:ILayoutController
Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
CloseFor some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
CloseILayoutSelfController is an ILayoutController that should drive its own RectTransform.
The iLayoutSelfController derives from the base controller ILayoutController and controls the layout of a RectTransform.
Use the ILayoutSelfController to manipulate a GameObject’s own RectTransform component, which you attach in the Inspector. Use ILayoutGroup to manipulate RectTransforms belonging to the children of the GameObject.
Call ILayoutController.SetLayoutHorizontal to handle horizontal parts of the layout, and call ILayoutController.SetLayoutVertical to handle vertical parts.
You can change the height, width, position and rotation of the RectTransform.
//This script shows how the GameObject’s own RectTransforms can be changed. //This creates a rectangle on the screen of the scale, positition and rotation you define in the Inspector. //Make sure to set the X and Y scale to be more than 0 to see it
using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems;
public class Example : UIBehaviour, ILayoutSelfController { //Fields in the inspector used to manipulate the RectTransform public Vector3 m_Position; public Vector3 m_Rotation; public Vector2 m_Scale;
//This handles horizontal aspects of the layout (derived from ILayoutController) public virtual void SetLayoutHorizontal() { //Move and Rotate the RectTransform appropriately UpdateRectTransform(); }
//This handles vertical aspects of the layout public virtual void SetLayoutVertical() { //Move and Rotate the RectTransform appropriately UpdateRectTransform(); }
//This tells when there is a change in the inspector #if UNITY_EDITOR protected override void OnValidate() { Debug.Log("Validate"); //Update the RectTransform position, rotation and scale UpdateRectTransform(); }
#endif
//This tells when there has been a change to the RectTransform's settings in the inspector protected override void OnRectTransformDimensionsChange() { //Update the RectTransform position, rotation and scale UpdateRectTransform(); }
void UpdateRectTransform() { //Fetch the RectTransform from the GameObject RectTransform rectTransform = GetComponent<RectTransform>();
//Change the scale of the RectTransform using the fields in the inspector rectTransform.localScale = new Vector3(m_Scale.x, m_Scale.y, 0);
//Change the position and rotation of the RectTransform rectTransform.SetPositionAndRotation(m_Position, Quaternion.Euler(m_Rotation)); } }
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thanks for helping to make the Unity documentation better!