Вопрос об управлении доступом к данным в программировании игр с ECS (Entity-Component-System) - PullRequest
0 голосов
/ 21 февраля 2020

Мы разрабатываем игру с ECS (Entity-Component-System).

Поскольку все данные, хранящиеся в компонентах, публикуются c, поэтому каждый может легко получить к ним доступ. Иногда кто-то изменяет данные по ошибке, что приводит к ошибке, которую трудно найти.

Я хочу создать инструмент для ограничения доступа, и тогда система сможет получить доступ только к некоторым фиксированным компонентам. Как я могу это сделать?

1 Ответ

0 голосов
/ 21 февраля 2020

Я думаю, что для деятельности разработчиков Unity большинство значений обычно остаются открытыми и легко изменяемыми. Если у вас есть что-то, что нужно опубликовать c в вашем C#, но не видно из редактора Unity, определите это как

publi c var {get; set;}

Если вам нужно дополнительно ограничить в Unity, определите свою переменную как

publi c var {get; приватный набор;}

Если вам действительно нужна дополнительная защита, разбейте значения на переменную доступа и вспомогательную переменную, ie:

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

Удачи!

...