Я делаю FPS, автономную игру Я хочу сохранить разные данные игроков, такие как имя, последний уровень игры, оставшееся здоровье, для каждого другого игрока, так что мы можем сделать это через игроков prefeb?unity3d PlayersPrefeb, можем ли мы сохранить информацию о игроках разных игроков через сборник игроков?
ответ
Для Сохранить плеер Info, конвертировать его в Json с JsonUtility.ToJson
затем сохранить его с PlayerPrefs.SetString
.
Для нагрузки Info-плеер, загрузить его с PlayerPrefs.GetStrin
г Преобразовать строку JSON в класс с JsonUtility.FromJson
.
Полный пример:
class Playerinfo
{
public string name;
public string lastLevelPlayed;
public float remainingHealth;
}
Сохранить:
Playerinfo playerInstance = new Playerinfo();
playerInstance.name = "Farhan Ali";
playerInstance.lastLevelPlayed = "5";
playerInstance.remainingHealth = 50;
//convert to Json
string SerializedPlayer = JsonUtility.ToJson(playerInstance);
//Save Player Info
PlayerPrefs.SetString("pInfo", SerializedPlayer);
нагрузки:
//Load Player Info
string loadInfo = PlayerPrefs.GetString("pInfo");
Playerinfo loadedInstance = JsonUtility.FromJson<Playerinfo>(loadInfo);
Debug.Log("Player name is " + loadedInstance.name);
Да, вы можете.
Лучше всего создать класс для игрока и использовать процесс сериализации из .NET:
[Serializable]
public class Player
{
public string Name { get; private set; }
public int Points { get; set; }
public Player(string name, int points) {
this.Name = name;
this.Points = points;
}
public static void SaveData(Player item, string id)
{
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, item as Player);
PlayerPrefs.SetString(id, Convert.ToBase64String(ms.GetBuffer()));
}
public static Player GetPlayer(string id)
{
if (PlayerPrefs.HasKey(id) == false) { return null; }
string str = PlayerPrefs.GetString(id);
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream(Convert.FromBase64String(str));
return bf.Deserialize(ms) as Player;
}
}
идентификатор представляет текущий игрок. Это должно происходить из входа в плеер, я бы предположил. Вам по-прежнему нужно знать, кто играет с какого-либо входа.
У меня есть более подробное объяснение того, как сделать это более гибким. here.
Большое вам спасибо –
- 1. Проверить победителя в игроках в архаите игроков
- 2. Можем ли мы использовать API статистики игроков для iOS?
- 3. Можем ли мы изменить изображения игроков динамически в игре cocos2d?
- 4. Django Модель для игроков
- 5. Количество виртуальных игроков и максимальное количество игроков
- 6. Чередование игроков
- 7. Покажите игроков по порядку относительно позиции пользователя в массиве игроков
- 8. pandas DataFrame - как получить продолжительность разных игроков
- 9. Создайте два разных объекта игроков в сети
- 10. Как чередовать двух игроков?
- 11. Добавить очки для игроков
- 12. Получить данные онлайн-игроков через battle.net API
- 13. Хранение игроков поворачивается
- 14. Как отслеживать рейтинги игроков?
- 15. Снаряды от неправильных игроков
- 16. Mediaelement.js показывает двух игроков
- 17. Как изменить состояния игроков?
- 18. Как отсортировать ArrayList объектов (имена игроков и оценки игроков)
- 19. Pickimino Game (2+ игроков)
- 20. Как моделировать игроков для разных видов спорта в RoR?
- 21. Сортировка игроков Вход
- 22. Вывести рейтинге рейтинга игроков?
- 23. MediaElement.js остановить всех игроков
- 24. Создание списка игроков
- 25. Имена игроков с петлями
- 26. Движение пейтонов-игроков
- 27. сериализовать массив игроков в java
- 28. Движение других игроков по udp socket (UNITY)
- 29. Можем ли мы получить информацию о звонке на iPhone?
- 30. Можем ли мы получить информацию о пользователе, используя Gigya Token
Спасибо большое .. и отдельное спасибо за использование мое имя в примере для привлечение ... :-p –
еще одно я могу получить эти поля, как имя и индекс уровня, по сцене. Как в Gui, я пишу имя игрока, тогда как я могу получить его в скрипт, потому что я немного не знаком с union3d @Programmer –
Добро пожаловать. Я не понимаю ваш второй вопрос. Если вы можете создать новый вопрос с примером того, о чем вы говорите, это было бы хорошо. – Programmer