zoukankan      html  css  js  c++  java
  • Unity UGUI动态生成控件

           一、 首先你得先清楚RectTransform组件的一些程序控制  

            1. 先得到UGUI控件上面的RectTransform组件

    RectTransform rtr = gameObject.GetComponent<RectTransform>();

              2.  设置top和bottom值

    rtr.offsetMax = new Vector2(rtr.offsetMax.x, top);
    rtr.offsetMin = new Vector2(rtr.offsetMin.x, bottom);

               3. 设置width,height

    rtr.sizeDelta = new Vector2(width, height);

               4.  设置pos

    rtr.anchoredPosition3D = new Vector3(posx,posy,posz);
    
    rtr.anchoredPosition = new Vector2(posx,posy);

               二、动态生成Button实例

              1. 目标是要生成这样一个Button,这是手工设置的方式:

                        

                 2. 现在是代码方式:

            canvas = GameObject.Find("Canvas").transform;
            if (ButtonPrefab)
            {
                NewButton = (Button)Instantiate(ButtonPrefab);
                NewButton.transform.SetParent(canvas);
                RectTransform rtr = NewButton.GetComponent<RectTransform>();
                //设置父级基准位置
                rtr.anchorMin = new Vector2(0.5f,0.5f);
                rtr.anchorMax = new Vector2(0.5f, 0.5f);
                //定义控件自身定位点位置
                rtr.pivot = new Vector2(0.5f, 0.5f);
                //定义控件定位点相对基准位置的偏移
                rtr.anchoredPosition = new Vector2(0, 0);
                //定义控件大小
                rtr.sizeDelta = new Vector2(200, 80);
                //事件添加
                NewButton.onClick.AddListener(ButtonClicked);
  • 相关阅读:
    4种排序实践
    redis 应用场景和数据类型
    建立三个线程,A线程打印10次A,B线程打印10次B,C线程打印10次C
    分布式线程安全(redis、zookeeper、数据库)
    [专项]3道改错题
    kafka 业务埋点
    spring boot集成kafka
    kafka本地调试
    C语言 gets()和scanf()函数的区别
    EOF
  • 原文地址:https://www.cnblogs.com/bearhb/p/11478255.html
Copyright © 2011-2022 走看看