C# scrollView个数随机UI从上部显示

1 篇文章 0 订阅
using UnityEngine;
using UnityEngine.UI;
using System.Collections;


public class UIPos : MonoBehaviour
{
    /*
     * 分辨率  1920*1080  UI大小  1080*180
     * scrollview内显示数量不确定,根据不同数量让第一个物品显示在最上方
     * 
     * 期间因为无滑动条造成下拉或上拉后会返回原位
     * 加上滑动条后就没有问题了
     * 
     * 可以根据物品大小 分辨率不同进行修改
     * 
     * 缺点 需要实时检测UI个数  耗性能
     */








    [SerializeField]
    int num=1;
    [SerializeField]
    int temp;
    [SerializeField]
    private Transform grid;
    
// Use this for initialization
void OnEnable ()
    {
        Debug.Log(1111);
        grid = transform.Find("content");//赋值 
        num = temp = grid.childCount;//所需显示个数
        Fit();
        StartCoroutine(FitNumber());
}

    IEnumerator FitNumber()
    {
        while (true)
        {
            temp = grid.childCount;
            if (num != temp)
            {
                Fit();
            }
            yield return 0;
        }
        
            
        
        
    }
    void Fit()
    {
        num = grid.childCount;//所需显示个数
        if (num * 180 > 1080)//所需显示物体是否大于屏幕高度
        {
            transform.localPosition = new Vector3(0, 0, 0);//设置遮罩位置为原点


            transform.parent.Find("VerticalScrollbar").GetComponent<Scrollbar>().value = 1;//滑动条回归最上方初始位置
        }
        else
        {
            transform.localPosition = new Vector3(transform.localPosition.x, 540 - (180 / 2) * num, transform.localPosition.z);//设置遮罩位置


            this.gameObject.GetComponent<RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 1080 * 2 - 180 * num);//设置遮罩的大小
        }


        grid.GetComponent<RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, num * 180);//设置显示内容的大小
        
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值