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;
}
}
iTween がプロパティへの変更をアニメーション化する方法と同様に、次のようなiTween.fadeTo(gameObject, ...
ステートメントを使用して Unity3d GUI コントロールにこれを実装する方法FadeOut()
複数のコントローラ インスタンスが指定されていない限り、個々の GUI コントロールをターゲットにする方法はおそらくありませんOnGUI()
。GUI.Box
ただし、フェード インの後にが続くなど、孤立した GUI インスタンスを制御するのはクールですGUI.Label
。