如果对于MVC模式没有较为熟悉的理解,在游戏开发中对此模式可能会比较模糊。
MVC模式简述
- M : Model 读写数据
- V : View 用户界面,把数据呈现给用户;接收用户交互,通过回调等方法传递给Controller
- C : Controller 视图控制器,接受View传递的用户输入,调用Model提供的接口进行处理,在合适的时间把Model传过来的数据显示出来
在游戏开发中的对应关系
在Unity的UGUI系统中这种结构其实比较清晰,Godot的UI系统和UGUI基本一致。
- M : 数据的存储和相关处理方法,可以通过一个公共的类,如
Global
,或根据游戏功能分成多个模块 - V : 依赖游戏引擎的实现和渲染,个人认为View应该是UGUI中承载一个UI界面节点的
GameObject
,Godot中的Node
- C : 绑定View中的控件,提供相关控制逻辑
Godot中的实例演示
Model
通过一个静态类Global
简化相关逻辑,用来演示
public static void Global { public static int Number { get; set; } public static void DoSomething() { Number = 999; } }
View
Godot中的一个Scene,结构为
Node (Node) TestBtn (Button)
Controller
实现自己的UIManager
, 或使用挂接在Node上的脚本, 这里演示挂接在Node上的脚本
using Godot; public class TestController : Node { private Button m_TestBtn; public override void _Ready() { m_TestBtn = GetNode<Button>("TestBtn"); m_TestBtn.Connect("pressed", this, "TestBtn_pressed"); } public void TestBtn_pressed() { GD.Print("Hello, world!"); Global.DoSomething(); GD.Print(Global.Number); } }
在Controller中对View的组件进行绑定相应, 并在适当的时候手动刷新View显示
来源:https://www.cnblogs.com/lunoctis/p/12098267.html