我理解ScriptableObjects的基本前提,但有一件事一直困扰着我。
我有一个class which has a List<Level>
。Level
是一个结构体,它有一个bool property isFree
,定义了关卡是免费的还是付费的。每当玩家试图从List<Level>
加载关卡时,我会检查玩家是否有权访问该关卡,然后加载它或将其发送到商店。
我计划重构我的代码来使用ScriptableObjects,每个对象都定义一个关卡。我关心的是这些对象 * 作为资产 * 文件存在。这是否意味着一个人可以打开这些文件并将关卡从免费切换到付费,或者这些文件在编辑游戏时可以编辑,而不是在游戏构建和运行后?
我认为答案是后者,否则编辑如此的武器和角色统计将使作弊变得微不足道。
2条答案
按热度按时间bmp9r5qi1#
无论你使用struct还是ScriptableObject,它们都是以相同的方式序列化的,理论上,它们可以被解构、编辑和重构,但这种情况非常罕见,尤其是对于小型游戏。
如果你真的想让它“更安全”,那就不要把它存储在本地。让游戏在每次启动时都做一次网络检查。
yqkkidmi2#
从技术上讲,它们既是资源又是代码。从技术上讲,常规场景文件也是资源。资源部分是文件的YAML部分,存储引用、值等。SO仍然有对应的代码。
dnSpy可以修改你的程序集。所以如果他们尝试足够多,他们可以改变你的代码做点什么。老实说,我不认为任何人会打扰那么多,但考虑到任何游戏在PC上可能有教练等。没有什么你可以做的,以防止作弊完全。统一游戏是不是微不足道的作弊,虽然,例如,与类似CheatEngine的东西。真的取决于。
编辑:
但是这种事情是非常罕见的,尤其是对于小游戏。
我同意路易斯的看法。