ScrollBar
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Lesson14 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
#region 知识点一 Scrollbar是什么
//Scrollbar是滚动条组件
//是UGUI中用于处理滚动条相关交互的关键组件
//默认创建的Scrollbar由2组对象组成
//父对象——Scrollbar组件依附的对象
//子对象——滚动块对象
//一般情况下我们不会单独使用滚动条
//都是配合ScrollView滚动视图来使用
#endregion
#region 知识点二 Scrollbar参数
#endregion
#region 知识点三 代码控制
Scrollbar sb = this.GetComponent<Scrollbar>();
print(sb.value);
print(sb.size);
#endregion
#region 知识点四 监听事件的两种方式
//1.拖脚本
//2.代码添加
sb.onValueChanged.AddListener((v) => {
print("代码监听的函数" + v);
});
#endregion
}
public void ChangeValue(float v)
{
print(v);
}
}
ScrollView
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Lesson15 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
#region 知识点一 ScrollRect是什么
//ScrollRect是滚动视图组件
//是UGUI中用于处理滚动视图相关交互的关键组件
//默认创建的ScrollRect由4组对象组成
//父对象——ScrollRect组件依附的对象 还有一个Image组件 最为背景图
//子对象
//Viewport控制滚动视图可视范围和内容显示
//Scrollbar Horizontal 水平滚动条
//Scrollbar Vertical 垂直滚动条
#endregion
#region 知识点二 ScrollRect参数
#endregion
#region 知识点三 代码控制
ScrollRect sr = this.GetComponent<ScrollRect>();
//改变内容的大小 具体可以拖动多少 都是根据它的尺寸来的
//sr.content.sizeDelta = new Vector2(200, 200);
sr.normalizedPosition = new Vector2(0, 0.5f);
#endregion
#region 知识点四 监听事件的两种方式
//1.拖脚本
//2.代码添加
sr.onValueChanged.AddListener((vec) =>
{
print(vec);
});
#endregion
}
public void ChangeValue(Vector2 v)
{
print(v);
}
}
作业:动态创建10个物品
回答1
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class BagPanel : MonoBehaviour
{
public static BagPanel panel;
public Button btnClose;
public ScrollRect svItems;
private void Awake()
{
panel = this;
}
// Start is called before the first frame update
void Start()
{
//第一步 动态创建格子 设置格子的位置
//动态创建n个图标 作为滚动视图中显示的内容
for (int i = 0; i < 30; i++)
{
GameObject item = Instantiate(Resources.Load<GameObject>("Item"));
item.transform.SetParent(svItems.content, false);
//设置格子的位置
item.transform.localPosition = new Vector3(10, -10, 0) + new Vector3(i % 4 * 160, -i / 4 * 160, 0);
}
//第二步 设置 Content的高
//由于设置了锚点宽度x不用考虑
//高度直接用浮点数的向上取整 可以弥补用普通数字+1遇到可以乘除时的问题
svItems.content.sizeDelta = new Vector2(0, Mathf.CeilToInt(30 / 4f) * 160);
btnClose.onClick.AddListener(() => {
gameObject.SetActive(false);
});
//一开始隐藏自己
this.gameObject.SetActive(false);
}
}