WIP by Flogger-K 2. Аркада в Unity.

Список разделов Геймдев в Blender Unity 3D

Модератор: exooman

Сообщение #21 Flogger-K » 20.07.2019, 14:55

Затык у меня с json. Туплю с десериализацией.
Сам json выглядит так:

Спойлер
Код: Выделить всё
{
"speed":2.0,
"nameUnit":"Experiment",
"weapon":1,
"xyzCoord":[1.5 , 3.0, 5.2]
}

Лежит он в папке Ассетов, рядом со сценой и прочим - других папок там нет, проект экспериментальный, очень маленький, как раз для отработки таких вот частных вопросов.

Сам скрипт СиШарп:

Спойлер
Код: Выделить всё
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

public class UnitINI : MonoBehaviour
   {
   
    public float speed = 0.0f;
    public string nameUnit;
    public int weapon = 1;
    public float[] xyzCoord = {0.0f , 0.0f, 0.0f};
   
   public string objectsJson = "Assets/experimentJson.json";
   
    void Start()
        {
        StreamReader strRead = new StreamReader(objectsJson);
        string json = strRead.ReadToEnd();
        UnitINI player = (UnitINI)JsonUtility.FromJson(json, typeof(UnitINI));
        Debug.Log(player.speed);
        }

   // Update is called once per frame
   void Update () {
      
   }
}

Итогом стало выдача консолью следующей ошибки:

Спойлер
ArgumentException: Cannot deserialize JSON to new instances of type 'UnitINI.'
UnityEngine.JsonUtility.FromJson (System.String json, System.Type type) (at C:/buildslave/unity/build/Modules/JSONSerialize/Public/JsonUtility.bindings.cs:48)
UnitINI.Start () (at Assets/UnitINI.cs:20)

Перерыл много сайтов, смотря примеры, но только в текстах. Сунулся на Котодомик.рф, там был архив с примером сериализации-десериализации, но, во-первых, он устарел (был рассчитан на сторонние библиотеки для работы с json), а во-вторых, и это главное - уже удален.
Что я делаю не так?
Опять ралогинило...
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/
ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 476

  • 1

Сообщение #22 exooman » 20.07.2019, 16:34

Почитай про scriptable object. Я использую его для хранения настроек танков - удобная вещь.

https://habr.com/ru/post/421523/

Так же данные можно хранить в html. Для статичных данных, типа текста и перевода, в плане удобства неплохо использовать статические классы.
exooman M
Аватара
Сообщения: 1689


  • 1

Сообщение #23 Flogger-K » 22.07.2019, 18:47

mageaster, exooman, спасибо за подсказки.
Урок по Scriptable Object с Хабра я воспроизвел, так сказать пошагово, но там еще надо почитать код, чтобы понять, что и зачем делается. Правда, кое-какие выводы насчет самодельных ассетов в меню я уже сделал - да это удобная штука. Также воспроизвел эффект работы монитора прицела - видеотекстура в юнити таки гораздо удобнее БГЕ. Плюс, dron подсказал насчет моих потуг с jsohn - оказывается, ни Monobehaviour, ни ScrriptableObject напрямую не поддерживают работу с json, надо дополнительно делать в этом же скрипте класс-"посредник". Потом, когда окончательно разберусь, попробую накатать статью в блог (давно его не обновлял).
Ну а пока - картинка с работой механизации МиГ-23М - отчетливо видно отклонение руля направления на киле, поднятый интерцепотор на правом крыле, если присмотреться, можно увидеть выпущенные тормоза и отклоненные стабилизаторы. Собственно, вся механика, кроме флаперонов, закончена, с ними надо разбираться отдельно - возникли вопросы чисто справочного характера - куда вертеть - это надо в РЛЭ и техсправочники лезть...
Вложения
МиГ-23_механизация.jpg
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/
ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 476

  • 4

Сообщение #24 Flogger-K » 11.09.2019, 19:07

Наклепал деревьев - для листвы использовал текстуры веток с листьями с textures.com, сделал почти полностью аэродром, без зданий - там довольно сложное кружево из рулежных дорожек и площадок. За основу брал найденные в Сети чертежи и схемы аэродромов. Укрытия для техники я делал еще до последней операции, осталось их затекстурить под бетон. И да, видимо, придется делать отдельно куски ландшафта, а потом их подгружать. Либо все же, как советовал exooman, приводить к масшатабам карты сами юниты, их скорости, и прочее. Пока еще не решил, 1/10 вроде как камера уже не видит, хотя может, я с камерой чего-то не так сделал. В общих чертах scriptable object я понял, c json вроде тоже более-менее понятно, хотя там и есть ограничения.
Ниже снимок аэродрома сверху. Имеет 2 ВПП длиной около 2.5 км, магистральную рулежную дорожку (широкая серая полоса,к которой примыкают рулежные дорожки к укрытиям). Укрытия для самолетов образуют вместе с рулежными дорожками что-то вроде веток дерева. Площадки для самолетных укрытий имеют обваловку (черные закорючки). Склад вооружения и склад ГСМ вынесены далеко в стороны от аэродрома, вдоль МРД имеются длинные площадки для стоянок самолетов (можно разместить эскадрилью), имеется площадка для контрольно-диспетчесркого пункта, примыкающая к главной ВПП и больше бетонные площадки для ангаров и зданий, которых там пока еще нет. Текстура кое-где будет заменена, это так сказать, пробные мазки. Предполагается использование аэродрома как проекте БГЕ, так и в Юнити.
Хех, не разлогинило ни разу...
Вложения
airbase.png
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/
ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Аватара
Сообщения: 476

Пред.

Вернуться в Unity 3D

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость