Готовый перевод 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
Настройки
Готово:
