畫布組能夠集中控制畫布上的全部元素的某些方面,而無需單獨的處理每個元素。畫布組的屬性會影響到所在的遊戲對象以及全部子對象。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;
}
}
}
}
複製代碼