Готовый перевод C# Game Programming Cookbook for Unity 3D / Программирование игр на Unity 3D C#. Книга готовых решений.: 2.2.5.1 Разбор скрипта

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «идёт перевод»

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

Настройки

Готово:

100.00% КП = 1.0