BasePlayerManager.cs наследуется от MonoBehavior, так что он может использовать системную функцию Awake (), чтобы вызвать его init() инициализацию:

public class BasePlayerManager : MonoBehavior
{

Функция Awake () основана на предположении, что она может быть повторно использована, поэтому она начинается с установки булевой переменной didInit на ложную. Эта переменная может быть использована, чтобы сказать, действительно ли была вызвана функция Init () и завершила выполнение:

public virtual void Awake ()
{
didInit=false;
// rather than clutter up the start() func, we call Init to do any
// startup specifics
Init();
}

Init () начинает с поиска ссылки на компонент DataManager скрипта (BaseUserManager как пояснил ранее в этой главе).
gameObject.GetComponent () будет возвращать ссылку на BaseUserManager, если он был добавлен к GameObject чтобы этот скрипт прилагался к:

public virtual void Init ()
{
// cache ref to our user manager
DataManager= gameObject.GetComponent<BaseUserManager>();

В этот момент, если переменная DataManager является нулевой, мы знаем, что компонент не был добавлен к этому GameObject, и этот код продолжает использовать gameObject.AddComponent (), чтобы добавить компонент BaseUserManager через код

if(DataManager==null)
DataManager= gameObject.AddComponent<BaseUserManager>();

Теперь, когда функция Init () будет сделана, didInit может быть установлен на истинное(true) значение:

// do play init things in this function
didInit= true;
}

GameFinished () будет вызываться из внешнего скрипта (возможно скрипт игрового контроллера или подобный скрипт управления состоянием игры (game-state)), чтобы рассказать это игроку, когда игра закончена:

public virtual void GameFinished()
{
DataManager.SetIsFinished(true);
}

Так же, как GameFinished(), GameStart() будет вызывать из внешнего скрипта, кода придет время начать игру. DataManager.SetIsFinished() вызывает, чтобы назначить переменной isFinished этого player's data manager на false:

public virtual void GameStart()
{
DataManager.SetIsFinished(false);
}
}

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: идёт перевод

Переведено на Нотабеноиде
http://notabenoid.org/book/55263/242444

Переводчики: ilia1395, Zeke0028