Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity事件模式的代码设计建议_C#_Unity3d_Design Patterns_Callback - Fatal编程技术网

C# Unity事件模式的代码设计建议

C# Unity事件模式的代码设计建议,c#,unity3d,design-patterns,callback,C#,Unity3d,Design Patterns,Callback,我正在为我的个人项目与Unity C#合作 我把模型和视图分开了。我希望视图在模型中的某些内容发生更改时自动更新 因此,我创建了一个Action对象,并向其中添加了所有视图更新函数 问题是,模型中有很多字段。将事件添加到这些字段将是一项非常乏味的工作,而且,单个变量的更改将导致整个UI更新,这可能是对性能的巨大浪费 但向这些字段中的每一个添加单独的操作对象将是一项更加繁琐的工作 我想要的是,当模型更改时,视图会更新,我认为这种事件模式是适合我的情况的最佳选择 对我的代码设计有什么建议吗?Unit

我正在为我的个人项目与Unity C#合作

我把模型和视图分开了。我希望视图在模型中的某些内容发生更改时自动更新

因此,我创建了一个Action对象,并向其中添加了所有视图更新函数

问题是,模型中有很多字段。将事件添加到这些字段将是一项非常乏味的工作,而且,单个变量的更改将导致整个UI更新,这可能是对性能的巨大浪费

但向这些字段中的每一个添加单独的操作对象将是一项更加繁琐的工作

我想要的是,当模型更改时,视图会更新,我认为这种事件模式是适合我的情况的最佳选择


对我的代码设计有什么建议吗?

Unity对使用ScriptableObjects来处理这样的事件有自己的见解。也就是说,Unity使用实体组件模式,而改装MVC模式与EC和Unity提供的一些优化相矛盾。

我不会使用事件来告诉视图在模型更改时进行更新。请向我们展示您的代码和您的尝试。您是这么说的,坚持使用Unity的MVC模式不是一个好主意?@MyBug18正确。你想用MVC解决什么问题?实际上我对Unity不太熟悉。我原以为拥有一个庞大的游戏类会让我更容易地管理代码,但现在我被UI处理卡住了。我只是简单地看了一下可编写脚本的对象,但我看不到传统事件和SO之间的区别。看来我也得做很多超多的超多的超多的超多的超多的超多的超多的超多的超多的超多的超多的超多的超多的超多的超多的超多的超多的超多的超多的超多的超多。与事件相比,使用脚本对象有什么好处?游戏设计者或非技术资源可以使用脚本对象来配置游戏。它们可以使用游戏对象的界面/检查器进行拖放。这使得程序员可以专注于战术解决方案,而游戏设计师则专注于战略解决方案。它允许非常严格的S.O.L.I.D。原则。