Добавляем чит-коды в игру

Читеров никто не любит, тем не менее, читы могут очень полезны в некоторых ситуациях. Например, для того, чтобы тестировать игру. Так, чтобы решить данный вопрос, нам понадобится небольшой скрипт, для обработки команд, которые пользователь будет вводить с текстового поля. Команда у нас будет состоять либо из одного, либо из двух слов. Допустим, в первом случаи это может быть просто слово «god», для перехода в режим бога. А во втором случаи, могут быть словосочетания, типа «money 100», то есть, добавить сто монет. Для наглядности, в нашем варианте, мы сразу реализуем возможность перехода с одной сцены на другую.

Добавляем чит-коды в игру

Особых приготовлений не нужно, кроме как, чтобы было воле ввода UI > InputField на сцене.

А далее небольшой скрипт:

using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using System.Collections;

public class Cheats : MonoBehaviour {

	public GameObject setActive; // вкл./выкл.
	public InputField inputField; // поле ввода текста

	private string key, value;
	private static bool _active;

	public static bool isActive
	{
		get{ return _active; }
	}

	void Start()
	{
		setActive.SetActive(false);
	}

	void Error()
	{
		Debug.Log(this + " невыполнимая команда.");
	}

	void Check()
	{
		if(!Input.GetKeyDown(KeyCode.Return) || !_active) return; // срабатывание по нажатию клавиши Enter, если консоль активна

		string[] tmp = inputField.text.Split(new char[]{' '});

		if(tmp.Length > 2)
		{
			Error();
			return;
		}
		else if(tmp.Length == 0)
		{
			return;
		}

		if(tmp.Length == 2)
		{
			key = tmp[0];
			value = tmp[1];
		}
		else
		{
			key = tmp[0];
			value = string.Empty;
		}

		GetCheat();
	}

	void Update()
	{
		if(Input.GetKeyDown (KeyCode.BackQuote) && !_active)
		{
			setActive.SetActive(true);
			_active = true;
		}
		else if(Input.GetKeyDown(KeyCode.BackQuote) && _active)
		{
			setActive.SetActive(false);
			_active = false;
		}

		Check();
	}

	void GetCheat()
	{
		switch(key)
		{
		case "map": // ключевое слово, чит
			if(Application.CanStreamedLevelBeLoaded(value))
			{
				Debug.Log(this + " загрузка сцены: " + value);
				SceneManager.LoadScene(value);
			}
			else
			{
				Error();
			}
			break;

		case "money":
			if(GetINT(value) > 0)
			{
				Debug.Log(this + " добавлено " + value + " золотых");
				// тут вызов функции, которая пополнит кошелек персонажа
			}
			else
			{
				Error();
			}
			break;

		default:
			Error();
			break;
		}
	}

	int GetINT(string text)
	{
		int result = 0;
		int number;
		if(int.TryParse(text, out number)) result = number;
		return result;
	}
}

Всё достаточно просто, чит для загрузки сцены уже есть, а добавить новые не составит труда.

Скачать демо проект:
Внимание! Посетители, находящиеся в группе Гости, не могут скачивать файлы.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
  • Яндекс.Метрика