我无法理解如何分离控制器的业务逻辑和 Unity3D GUI 控件的视图。
例如,如果我有一个GUI.Box
,我将如何实现一个控制器来淡入或淡出OnGUI
视图的生命周期阶段?
看法
using UnityEngine;
public class ExampleView : MonoBehaviour {
protected void OnGUI () {
GUI.Box(new Rect(0, 0, 100, 100), "Title");
}
}
如果我实例化一个控制器来更改它alpha
,GUI.color
则需要Update()
来自主视图线程的通知。
为了粗略地封装功能,如果这是一个单独的脚本,它可以实现为:
using UnityEngine;
public class ExampleView : MonoBehaviour {
private Color color;
protected void Start () {
color = Color.white;
}
protected void OnGUI () {
GUI.color = color;
GUI.Box(new Rect(0, 0, 100, 100), "Title");
}
protected void Update () {
if(color.a > 0)
color.a -= Time.deltaTime / 3;
}
}
类似于 iTweeniTween.fadeTo(gameObject, ...
如何使用以下语句为 Unity3d GUI 控件实现对属性的更改进行动画处理FadeOut()
?
除非指定了多个控制器实例,否则可能无法针对单个 GUI 控件OnGUI()
。但是,控制隔离的 GUI 实例(例如淡入淡出)会很酷,GUI.Box
然后是GUI.Label
.