Страница 2 из 2

Re: Пару вопросов для юнитиводов от фазеровода :)

СообщениеДобавлено: 09 июл 2020, 08:09
maddogmaycry
seaman писал(а):Надеюсь Вы понимаете, что это только данные.

Так мне хотя бы увидеть, как эти данные можно было бы обьявить.
Обьявить, по аналогии с тем что у меня там выше. Там пример не совсем корректный, так как сами данные уже получены из JSON, и мы уже имеем дело ссылками на ячейки памяти.
Но это наглядно демонстрирует сам принцип.

Так как бы вы обьявили и потом получили доступ к значениям?
Какими методами располагает # на нативном уровне для реализации подобных вещей?

Как у меня:
JSON -> закинуть в память, и получить некий многомерный обьект.
Теперь можно получить все ключи по их ссылке из памяти.
Синтаксис:
Используется javascript
for(key in tree){
...  
if(tree[key][type]=="parent"){
      рекурсия
    }
}


Как я это вижу сейчас
Допустим у нас есть файл в файловой системе (xml/json).
Сначала я должен загрузить весь файл в память.
Теперь нужны какие то методы, которые будут получать узлы, изменять.

Re: Пару вопросов для юнитиводов от фазеровода :)

СообщениеДобавлено: 09 июл 2020, 11:34
Iq51
Можно целиком объекты в json перегонять и восстанавливать: JsonUtility.

Что-то такое:

var jsonData = File.ReadAllText(savePath);
var data = JsonUtility.FromJson<T>(jsonData);

Re: Пару вопросов для юнитиводов от фазеровода :)

СообщениеДобавлено: 09 июл 2020, 11:41
Woland
ну к примеру как у меня сделано (я не говорю, что это правильно и вообще так надо - просто пример). Есть json с описанием NPC (снизу часть из этого json). Я считываю инфу из файла и накладываю её на структуру своих классов. В результате у меня получается список объектов классов с заданной структурой и с данными, которые я задал в json
Синтаксис:
Используется csharp
{
                                                "NPCId" : 4,
                                                "type": "craft",
                                                "positionIndex" : 2,
                                                "texture" : "Textures/Characters/NPC/Uncle_bear/Uncle_bear_SkeletonData",
                                                "animator": "Textures/Characters/NPC/Uncle_bear/Uncle_bear_Controller",
                                                "material": "Textures/Characters/NPC/Uncle_bear/Uncle_bear_Material",
                                                "allReplicsBlocks":
                                                [
                                                        {
                                                        "autoSpeak":true,
                                                        "condition":
                                                        [
                                                                {
                                                                        "conditionName":"talkedWithCraft1",
                                                                        "conditionValue":false
                                                                }
                                                        ],
                                                        "allReplics":
                                                                [
                                                                        {
                                                                                "whoSpeak": "bear",
                                                                                "replic": "lodg_craft_tutorial1"
                                                                        },
                                                                        {
                                                                                "whoSpeak": "topa",
                                                                                "replic": "topa_craft_tutorial1",
                                                                                "conditionToSet":
                                                                                {
                                                                                        "conditionName":"talkedWithCraft1",
                                                                                        "conditionValue":true
                                                                                }
                                                                        }
                                                                ]
                                                        },
                                                        {
                                                        "autoSpeak":false,
                                                        "condition":
                                                        [
                                                                {
                                                                        "conditionName":"talkedWithCraft1",
                                                                        "conditionValue":true
                                                                }
                                                        ],
                                                        "allReplics":
                                                                [
                                                                        {
                                                                                "whoSpeak": "bear",
                                                                                "replic": "bear_common1"
                                                                        }
                                                                ]
                                                        }
                                                ],
                                               
                                                "allCraftItems":
                                                        [
                                                                {
                                                                        "id": "4_1",
                                                                        "neededMoney":30,
                                                                        "neededItems":
                                                                        [
                                                                                {
                                                                                        "id":"10_1",
                                                                                        "count":1                                                                              
                                                                                }
                                                                        ]
                                                                },
                                                                {
                                                                        "id": "4_2",
                                                                        "neededMoney":30,
                                                                        "neededItems":
                                                                        [
                                                                                {
                                                                                        "id":"10_1",
                                                                                        "count":1
                                                                                }
                                                                        ]
                                                                },
                                                                {
                                                                        "id": "4_3",
                                                                        "neededMoney":30,
                                                                        "neededItems":
                                                                        [
                                                                                {
                                                                                        "id":"10_1",
                                                                                        "count":1
                                                                                }
                                                                        ]
                                                                }
                                                        ]
                                        }

Re: Пару вопросов для юнитиводов от фазеровода :)

СообщениеДобавлено: 09 июл 2020, 13:25
Dewa1s
maddogmaycry писал(а):
seaman писал(а):Надеюсь Вы понимаете, что это только данные.

Так мне хотя бы увидеть, как эти данные можно было бы обьявить.
Обьявить, по аналогии с тем что у меня там выше. Там пример не совсем корректный, так как сами данные уже получены из JSON, и мы уже имеем дело ссылками на ячейки памяти.
Но это наглядно демонстрирует сам принцип.

Так как бы вы обьявили и потом получили доступ к значениям?
Какими методами располагает # на нативном уровне для реализации подобных вещей?

Как у меня:
JSON -> закинуть в память, и получить некий многомерный обьект.
Теперь можно получить все ключи по их ссылке из памяти.
Синтаксис:
Используется javascript
for(key in tree){
...  
if(tree[key][type]=="parent"){
      рекурсия
    }
}


Как я это вижу сейчас
Допустим у нас есть файл в файловой системе (xml/json).
Сначала я должен загрузить весь файл в память.
Теперь нужны какие то методы, которые будут получать узлы, изменять.

Есть же сторонние сериализаторы JSON
https://www.newtonsoft.com/json/help/ht ... gments.htm
Он позволяет стучаться до определенных полей с синтаксисом практически как вам надо

Re: Пару вопросов для юнитиводов от фазеровода :)

СообщениеДобавлено: 09 июл 2020, 17:03
maddogmaycry
Всем спасибо за ответы.
Уже третий день потихоньку изучаю # и он мне нравится.
Переходить с привычных вещей не так просто как хотелось бы.

Re: Пару вопросов для юнитиводов от фазеровода :)

СообщениеДобавлено: 10 июл 2020, 17:41
maddogmaycry
Не поможете разобраться с такой штукой.

class myClass<T>
Что это значит? Где об этом можно почитать?

А, все понятно. Костыль для динамической типизации :)

Re: Пару вопросов для юнитиводов от фазеровода :)

СообщениеДобавлено: 10 июл 2020, 19:40
Saltant
Ни каким образом это не костыль. Это Generic классы. https://docs.microsoft.com/ru-ru/dotnet ... ic-classes

Re: Пару вопросов для юнитиводов от фазеровода :)

СообщениеДобавлено: 10 июл 2020, 20:13
seaman
Если программировали на плюсах, там есть templates. Дженерики - это нечто типа их...

Костыль для динамической типизации в шарпе - это тип dynamic На некоторых платформах не работает, и вообще, имхо,- именно костыль.