请问我的游戏内数据记录方式有没有问题?

  • 使用TypeScript编写脚本。

由于游戏里有多个场景,所以为了方便数据和方法调用,我所用的数据存储方式是:
创建一个类,并通过该类的一个实例化对象来记录和调用数据。类似这样的:

通过这样的方式来使用数据:
类似的实现方式在我的代码里还有好几个,比如TaskManager类,将载入任务内容、获得随机任务等方法整合在一起,调用方式如下:


本来使用上是没有问题的(可能有问题,但是问题不太严重),但是最近在实现多语言的时候,在手机上测试时遇上了严重的发热问题。
我有一个事件广播类,如下的代码:


在label的实现里加了
这样实现了我在修改语言的时候,使用此脚本的label可以刷新label的文本显示。

我个人是觉得我这样的实现方式是没有问题的,但是手机有严重的发热问题…去除ebMgr的register实现方法后发热问题不重现了…
所以,问问,我这样的实现方法可能会导致什么问题?有什么可能存在的隐患?以及大家是怎么实现游戏内数据记录的 ?询问下大家有什么好的意见和建议。

我看你这做的是一个秒切语言的东西。有没有对比一下两种情况下的内存情况?

又或者可以把广播方法中的for循环写法改为分帧的写法,感觉for循环这种涉及渲染/实例化的会很耗性能。

:joy:不重现了…
因为发热问题,我改了实现方式,直接是修改了语言后就重现加载当前场景,不再是通过广播事件让语言进行修改。
然后,为了对比你所提及的内存情况,将代码又改了回去后就发现怎么也重现不了发热的问题。但是之前发热后我去掉这段代码后确实就好转了。所以现在也不确定是不是真的是这段代码有问题…

所以,不重现问题的话,是不是表示我这样的代码方式还是可行的?因为我代码中有不少的类似这样的的自定义类通过一个变量实例化后方便其他脚本调用。有些组件我也使用了这种方式方便其他脚本调用,一般是挂靠了资源的组件、被频繁调用的作粒子效果的组件、显示信息的组件。
我在搜寻资料的过程中很少看到别人也是这样的实现方式,所以担心我这样的实现方式有隐患存在。实际上,我的游戏在IOS上运行一段时间后会出现内存不足的问题。虽然做了点优化现在好些了,但是不清楚是不是跟我的代码编写方式有关…

代码实现方式千千种,自己用得顺手就行了。如果全局只实例化一次这个EventBroadcase,本身并不会产生额外的消耗。

好的,谢谢~