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);//设置显示内容的大小
}
}
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);//设置显示内容的大小
}
}