画布组能够集中控制画布上的全部元素的某些方面,而无需单独的处理每个元素。画布组的属性会影响到所在的游戏对象以及全部子对象。c#
alpha: 不透明度,介于0-1之间,0是全透明,1是不透明,UI元素会保留本身的alpha值,因此最后元素实际展现效果显示的是alpha属性是画布组的alpha值 * 元素自己的alpha值。markdown
interactable: 肯定此组件是否接收输入。若是不勾选的话表明禁止交互(组件自身的交互功能),值为false。svn
Block Raycasts: 此组件是否做为射线投射的碰撞体?须要在链接到画布的图形射线投射器上调用RayCast函数。若是不勾选的话表明不做为射线投射的碰撞体,值为false。函数
Ignore Parent Groups: 此组是否会受到游戏对象层级视图中更上层的Canvas Group组件的设置所影响。勾选则接收检测,值为true。oop
建立一个Canvas,添加Canvas Group组件。在这个Canvas下添加一个GameObject在GameObject中添加两个颜色同样的Button组件,而且第一个Button的alpha值设置为146;性能
test脚本挂在案例的Canvas上面测试
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class test : MonoBehaviour
{
private float alphaBegin = 0.0f;
private float alphaSpeed = 2.0f;
bool isShow = false;
private CanvasGroup ex;
// Start is called before the first frame update
void Start()
{
ex = this.transform.GetComponent<CanvasGroup>();
}
// Update is called once per frame
void Update()
{
if(!isShow)
{
ex.alpha = Mathf.Lerp(ex.alpha, alphaBegin, alphaSpeed * Time.deltaTime);
if (Mathf.Abs(alphaBegin - ex.alpha)<= 0.01)
{
isShow = true;
ex.alpha = alphaBegin;
alphaBegin = 1;
}
}
else
{
ex.alpha = Mathf.Lerp(ex.alpha, alphaBegin, alphaSpeed * Time.deltaTime * 0.5f);
if(Mathf.Abs(alphaBegin - ex.alpha)<=0.01)
{
isShow = false;
ex.alpha = alphaBegin;
alphaBegin = 0;
}
}
}
}
复制代码