读一读

IPointerEnterHandler-OnPointerEnter,鼠标进入时调用

IPointerExitHandler-OnPointerExit,鼠标退出时调用

IPointerDownHandler-OnPointerDown,鼠标按下时调用

IPointerUpHandler-OnPointerUp,鼠标抬起时调用

IPointerClickHandler-OnPointerClick,鼠标按下并抬起时调用


IPointerClickHandler中要实现的只有一个方法,这个方法会在可用区域按下后抬起时调用

public class BasePanel : IPointerClickHandler{
    public void OnPointerClick (PointerEventData eventData){
		this.Onfocus ();
	}
}

添加UGUI物体后,自动创建EventSystem,它由EventSystem,StandaloneInputModule,{TouchInputModule}个组件组成。TouchInputModele的handle已经集成在StandaloneInputModule了。

EventSystem组件主要用来处理输入,射线投影和发送事件。InputModule继承自BaseInputModule,主要当然是发送输入事件到具体对象。

总的来说,EventSystem负责管理,BaseInputModule负责输入,BaseRaycaster负责确定目标对象,目标对象负责接受事件并处理,然后一个完整的事件系统就有了。


一个可以帮UI实现透明度(显示和隐藏),设置可不可交互等

Alpha 透明通道 0-1

Interactable 是否可交互

BlocksRaycasts 是否允许像collider那样接受Canvas的射线检测


this.transform.SetAsLastSibling ();
this.transform.parent.SetAsLastSibling ();

已知ugui中,越靠前的物体将会被挡得越多,所以当要让某个元素排列在最前面时,将它设置在最后面

SetAsLastSibling方法将元素设置在同级元素的最后面,如果不止是同级元素,则可以考虑将父级元素也设为The Last元素,以此类推


public void Init(){
	string[] panelNames = Enum.GetNames (typeof(UIPanelType));

	//根据名字查找打开Panel的按钮
	for(int i = 0;i<panelNames.Length;i++){
		string ButtonName = panelNames[i]+"Btn";
		string typeName = panelNames [i];
		Button btn = GameObject.Find (ButtonName).GetComponent<Button> ();
		btn.onClick.AddListener(()=>{
			OnClick(typeName);//主要在这,用方法调用方法
		});
	}
}

public void OnClick(string type){
	UIPanelType eType =(UIPanelType) Enum.Parse (typeof(UIPanelType), type);
	UIManager.Instance.PushPanel (eType);
}

OnClick(typeName) 这里的typeName是一个确定的值,应该添加事件委托时就保存下来了

参数中出现了i值就不行了,可能说明这个值是不确定的,委托机制会在用的时候再取出,此时已经没有这些变量了,错误


参数只有一个,那就是是否显示自身图片内容Show Mask Graphic

Mask遮罩,用于遮罩自身区域外的东西,通常用于可滚动区域,这样就可以形成一个小窗看世界了。

使用方法就是直接将需要遮住的类容,成为有Mask组件物体的子物体。


Rect Transform和一般的Transform不同,要修改大小时不是修改缩放,而是修改Width和Height属性

Pivot 是中心参考点(轴心),旋转,位置信息都与它有关

Anchors 锚点,用来制作自适应界面等。四个参考点,分别对应图片的四个角,当四个参考点设定好后,图片对应就会跟随参考点进行运动


在Text,GUIStyle,GUIText,TextMesh,甚至是Debug.Log都可以使用富文本

就是一种类型于html的标签的形式

<b>加粗</b>

<i>斜体</i>

<size=16>字体大小</size>

<color=blue>字体颜色</color>


Content 内容区域,在Viewport下的Content

Horizontal Vertical 是否可以水平或垂直滑动

Movement Type 滚动类型

  1. Unrestricted 随便滚

  2. Elastic 划过了会弹回来

  3. Clasmped 不允许划过

Inertia 惯性,用力划,松开会继续划

Viewport 显示类容的遮罩层

Horizontal Scrollbar 水平滚动条

Vertical Scrollbar 垂直滚动条