Готовый перевод C# Game Programming Cookbook for Unity 3D / Программирование игр на Unity 3D C#. Книга готовых решений.: 2.2.1 BaseGameController.cs
Игровой контроллер выступает в качестве концентратора для активной игровой деятельности и в качестве места, где скрипты, которые могут быть напрямую не связаны, смогут отправлять сообщения друг другу. При распределении скриптов через игровой контроллер, они остаются независимыми, и изменение их поведения это прямой процесс изменения работы с сообщениями здесь, а не через множественные скрипты.
Основными функциями игрового контроллера являются:
1. Отслеживание состояния игры:
а. Хранение состояния игры.
б. Предоставлять функции для изменения состояния игры.
в. Изменять состояние игры, основываясь на вызовах функций, таких как EndGame(), StartGame(), или PauseGame().
2. Создание любых объектов игроков.
3. Настройка камеры (любые особенности, такие как показывать камере, за каким игроком следовать, и т.д.).
4. Связь между менеджером сеансов, менеджером пользователей, и игровыми событиями (например, счет и т.д.).
5. Обращение любых связей между сценариями, которые мы хотели бы сохранить в качестве автономных и не пришлось бы перекодировать напрямую для общения друг с другом
Игровой контроллер является ядром геймплея, где общие функции игры определены и рассмотрены, и когда текущее состояние игры проводится. Отслеживание состояния игры важно, так как некоторые элементы нам нужно будет изменить для своего поведения на основе этого. Если игра приостановлена, например, мы хотим, чтобы приостановился весь ввод, заморозилось игровое время, и показалось всплывающее окно. Когда игра заканчивается, нам нужно будет отключить ввод игрока и так далее. Отслеживание состояния игры является работа скрипта game controller.
Типичная игра может иметь несколько состояний, таких как
1. Игра запущена
2. Игра на паузе
3. Загрузка
4. Игра закончена
Там также может быть несколько пользовательских состояний, которые применимы к отдельным видам игр, таких как состояние для показывающий ролик или, возможно, состояние проигрывания специального аудио-клип ролика. Я рекомендую для любого игрового действия, на которое влияет как один так и несколько из ваших скриптов работать над созданием нового состояния. Таким образом, вы всегда можете иметь скрипты опирающиеся на гейм контроллер чтобы знать, как себя вести.
База игры скрипт контроллера, находится в Scripts / BASE, выглядит следующим образом:
public class BaseGameController : MonoBehavior
{
bool paused;
public GameObject explosionPrefab;
public virtual void PlayerLostLife ()
{
// deal with player life lost (update U.I. etc.)
}
public virtual void SpawnPlayer ()
{
// the player needs to be spawned
}
public virtual void Respawn ()
{
// the player is respawning
}
public virtual void StartGame()
{
// do start game functions
}
public void Explode ( Vector3 aPosition )
{
// instantiate an explosion at the position passed into this function
Instantiate( explosionPrefab,aPosition, Quaternion.identity );
}
public virtual void EnemyDestroyed( Vector3 aPosition, int pointsValue,
int hitByID )
{
// deal with enemy destroyed
}
public virtual void BossDestroyed()
{
// deal with the end of a boss battle
}
public virtual void RestartGameButtonPressed()
{
// deal with restart button (default behavior re-loads the
// currently loaded scene)
Application.LoadLevel(Application.loadedLevelName);
}
public bool Paused
{
get
{
// get paused
return paused;
}
set
{
// set paused
paused = value;
if (paused)
{
// pause time
Time.timeScale= 0f;
} else {
// unpause Unity
Time.timeScale = 1f;
}
}
}
}
Внимание! Этот перевод, возможно, ещё не готов.
Его статус: идёт перевод
Переведено на Нотабеноиде
http://notabenoid.org/book/55263/242436
Переводчики: Arien0028, ilia1395, Zeke0028
Настройки
Готово:
