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

Оглавление
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

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

ilia1395 26.10.14 в 11:30

0

public class BasePlayerManager : MonoBehavior
{

Zeke0028 25.09.14 в 03:19

0

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

ilia1395 26.10.14 в 11:33

0

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

Zeke0028 25.09.14 в 03:19

0

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

ilia1395 26.10.14 в 11:38

0

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

Zeke0028 25.09.14 в 03:19

0

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

ilia1395 26.10.14 в 11:45

0

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

Zeke0028 25.09.14 в 03:19

0

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

ilia1395 26.10.14 в 11:46

0

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

Zeke0028 25.09.14 в 03:19

0

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

ilia1395 26.10.14 в 11:49

0

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

Zeke0028 25.09.14 в 03:20

0

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

ilia1395 26.10.14 в 11:55

0

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

Zeke0028 25.09.14 в 03:20

0
Минутку...