我的应用程序有一个用于设置的UI,它是文本框和滚动条的混合体,用户可以与其交互。我已经为这些设置创建了一个类,并创建了一个对象来存储它们。用户还可以给出命令行参数,以便从文件中应用设置。
我有一个函数从对象(即从文件中读取)将这些数据加载到UI中,还有一个函数在用户更改UI时更改对象数据。
我的问题是:如果我将文件中的数据加载到UI中,负责在UI中反映这些更改的函数就会触发,但另一个函数也会触发,因为UI已经发生了更改。
那么,我应该做些什么来克服这个问题呢?我应该实现某种状态机制来告诉代码用户已经进行了更改,或者设置了一些标志来标记数据是从文件中加载的。如果你能建议一些设计模式来遵循呢?
发布于 2021-04-25 22:01:41
我对我的意见作了详细说明,作为答复:
许多Unity组件(以及它们的文本Mesh Pro对应方)包括一个SetValueWithoutNotify
方法。这使您可以使用新显示的值更新小部件--就像播放机自己输入或选择了它一样--但无需调用代码可能侦听的任何onValueChanged
事件,以便在幕后更新数据模型。
看吧。
通过这种方式,您可以从数据模型中更新UI的显示状态,而无需创建一个反馈循环,其中UI调用一个回调,该回调立即尝试将新的UI值写回它来自的模型。
https://gamedev.stackexchange.com/questions/191846
复制相似问题