首页 > 解决方案 > 关于ECS(Entity-Component-System)游戏编程中数据访问控制的问题

问题描述

我们正在使用 ECS(实体-组件-系统)开发游戏。

因为存储在组件中的所有数据都是公开的,所以每个人都可以轻松访问它们。有时有人错误地修改了数据,这会导致很难找到它的错误。

我想制作一个工具来限制访问,然后系统只能访问一些固定组件。我怎样才能做到这一点?

标签: unity3ddata-oriented-design

解决方案


我认为对于 Unity 开发活动,大多数值通常是开放的并且易于更改。如果您有一些需要在 C# 中公开但在 Unity 编辑器中不可见的内容,请将其定义为

公共变量 {get;set;}

如果您需要在 Unity 中进一步限制,请将您的变量定义为

公共变量{得到;私人集;}

如果您确实需要进一步保护,请将值分解为访问器和支持变量,即:

var _x;
public var X
{
  get {return _x;}
  set {
      if( valueAllowedToBeWritten)
        _x = value;
      }

祝你好运!


推荐阅读