Вторник, 07 Июля 2020, 08:52

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » alexsilent [849]
Результаты поиска
alexsilentДата: Четверг, 09 Января 2020, 07:24 | Сообщение # 41 | Тема: C# необычная функция с возвращением результата
почти ветеран
Сейчас нет на сайте
drcrack, я пока там запутался и решил откат сделать) пришлось по 2 раза писать.
Код

string word = words[0].Substring(1);
Game.Group[word].num[words[1]] = MathAction(Game.Group[word].num[words[1]], WORD);


Но зато пока работает)
потестил, можно уже писать свой первый мини скрипт, где пока есть только print, проверка if и инициализация данных словаря + математика с этими данными)



Язык у меня пока примитивный там, то есть надо обязательно слова разделять пробелом,
например вот так не будет работать
Код
$hero.hp=10
а нужно вот так
Код
$hero.hp = 10

ибо у меня всё через Split(" "[0]) по пробелам ищу новые словам, и других будет куча ограничений,
но зато можно будет легко делать уровневые скрипты, как я раньше на JS делал, в одной из своих игр:




Сообщение отредактировал alexsilent - Четверг, 09 Января 2020, 08:05
alexsilentДата: Четверг, 09 Января 2020, 07:01 | Сообщение # 42 | Тема: Как вы ещё используете SceneManager?
почти ветеран
Сейчас нет на сайте
Мне кажется SceneManager сделали для удобства, но какое удобство с этим может быть!?
Я пока не совсем понимаю.
Можно ли что-то большее выжать из SceneManager, чем просто загрузка уровня?
Код
SceneManager.LoadScene("scenename");


1) Можно ли сделать SceneManager, как альтернативу DontDestroyOnLoad?
В теории, мне кажется можно, но пока не понял как. Мне вот например, нужно сделать камеру HUD,
чтобы она никогда не удалялась, и при перезагрузке уровня была промежуточным окном между уровнями,
как например в Скайриме:

2) Как вы иначе используете SceneManager, есть ли у этого менеджера другие цели и возможности?
3) Если создать несколько уровней: активный для игры, а остальные для данных и системных скриптов и объектов.
Как сделать так, чтобы был виден только активный уровень, а остальные работали, но не были видны в игре?

PS Я просто до этого всегда использовал оператор Application.LoadLevel (или как-то так), но он уже устарел,
и мне теперь интересно, зачем целый менеджер городить ради этого, неужели там много новых интересных фич и удобств?


Сообщение отредактировал alexsilent - Четверг, 09 Января 2020, 07:10
alexsilentДата: Четверг, 09 Января 2020, 05:44 | Сообщение # 43 | Тема: Посоветуйте необычные глобальные тактические игры
почти ветеран
Сейчас нет на сайте
Ищу тактические игры, с глобальным миром и конкретными героями:
1) без разделения на отдельные уровни или главы (не как в Heroes of Might n Magic, где куча отдельных уровней,
на которые не вернуться назад, и часто там вообще другие герои и история)
2) с управлением одним героем или командой (а не как в Sims или Civilization, где управляешь сразу всем)
и если эти герои погибнут, то игра закончится.
3) Также подойдут любые JRPG/CRPG, где мир открыт сразу весь, а не будет открываться по сценарию, (мне очень нравится как было в Rings of Power на мегадрайве от Naughty Dogs) такая игра тоже пойдёт за необычную тактическую игру, где можешь с самого начала идти куда хочешь (чтобы в ролевой игре главное был не сюжет, а путешествие или что-то другое)
4) Желательно, чтобы там кипела псевдожизнь, то есть чтобы неписи принимали свои решения, захватывали базы и прочее,
хотя это не приоритет, и можно забить на этот пункт
5) Оффлайн игра (желательно, ибо я не любитель онлайн игр, там часто совершенно другой баланс, расчитаный на то чтобы в игру годами играть, ибо онлайн игра жива, пока в неё заходят постоянно, а мне такой гемплей не нравится, особенно раздражают всякие дейлики и другие приёмы наркотического привыкания к игре)

PS примеры игр, какие больше всего понравились из подобного списка: Kenshi, Mount n Blade



Сообщение отредактировал alexsilent - Четверг, 09 Января 2020, 06:27
alexsilentДата: Вторник, 07 Января 2020, 10:11 | Сообщение # 44 | Тема: C# необычная функция с возвращением результата
почти ветеран
Сейчас нет на сайте
Xakep, спасибо! Всё время забываю, что можно инициировать переменную с помощью var.

drcrack, попытался почитать про "C# generic" и это сложно для меня, кажется будто тут совсем другой язык,
который я ещё не изучал, и он достаточно сложный для художника)
Например, пример:
Код

class MyGenericClass<T>
{
    private T genericMemberVariable;

    public MyGenericClass(T value)
    {
        genericMemberVariable = value;
    }

    public T genericMethod(T genericParameter)
    {
        Console.WriteLine("Parameter type: {0}, value: {1}", typeof(T).ToString(),genericParameter);
        Console.WriteLine("Return type: {0}, value: {1}", typeof(T).ToString(), genericMemberVariable);
            
        return genericMemberVariable;
    }

    public T genericProperty { get; set; }
}

смотрю в него и вижу что-то непонятное, возможно причина в том, что мне всегда сложно ООП даётся,
и я только поверхностные основы освоил, как дизайнеру мне легче понимать простые скрипты, которые обычно
в Lua или Basic используют, и на основе тех языков я пытаюсь учить C#.
Попробую потом ещё погуглить, может быть встречу более простые и понятные примеры.

Добавлено (07 Января 2020, 16:06)
---------------------------------------------
Кажется ref не работает с dictionary или я не так это делаю) буду гуглить, ибо что-то пошло не так, может я просто накосячил в коде.


Сообщение отредактировал alexsilent - Вторник, 07 Января 2020, 16:07
alexsilentДата: Вторник, 07 Января 2020, 09:25 | Сообщение # 45 | Тема: C# необычная функция с возвращением результата
почти ветеран
Сейчас нет на сайте
Цитата drcrack ()
просто меняй как будто ты вообще не в функции а там откуда ты ее вызываешь

Большое Спасибо! Не знал что так можно делать, такой код хорошо читается и приятно выглядит!

Цитата drcrack ()
сделай несколько AddAction с разными комбинациями параметров
компилятор сам выберет нужную, это называется "перегрузка методов"


Я боялся делать несколько функций с одинаковыми именами и разными входящими типами данных,
мне казалось компилятор будет медленнее читать такой код, ибо будет искать 2 или больше функций вместо одной,
но если это не влияет на производительность, то круто!
alexsilentДата: Вторник, 07 Января 2020, 08:38 | Сообщение # 46 | Тема: C# необычная функция с возвращением результата
почти ветеран
Сейчас нет на сайте
Цитата drcrack ()
так вот, с Dictionary тебе в общем-то и ref не нужен, он и так всегда передается по ссылке
т.е. ты можешь внутри AddAction менять значения в своем словаре и это будет просто работать без лишнего кода

А как это работает, какой код надо написать?
Или имеется ввиду просто запомнить имя словаря и изменить его прямо в функции?
Просто у меня функция AddAction будет работать не только со словарём, но и несколькими другими переменными,
например там могут быть строки типа:
Код

AddAction(Game.WindPower,1);
AddAction(Game.Day,1);
AddAction(Hero.HP,1);

и другие переменные, которые не входят в словарь, тоже будут работать с этим скриптом
или я просто не так понял суть

Добавлено (07 Января 2020, 08:43)
---------------------------------------------


Сообщение отредактировал alexsilent - Вторник, 07 Января 2020, 08:47
alexsilentДата: Вторник, 07 Января 2020, 07:22 | Сообщение # 47 | Тема: C# необычная функция с возвращением результата
почти ветеран
Сейчас нет на сайте
drcrack, точно Спасибо! Круто что в C# тоже можно сделать такое!
С этим же нет никаких проблем или подводных камней, можно ли ref делать с Dictionary?


Сообщение отредактировал alexsilent - Вторник, 07 Января 2020, 07:23
alexsilentДата: Вторник, 07 Января 2020, 06:56 | Сообщение # 48 | Тема: C# необычная функция с возвращением результата
почти ветеран
Сейчас нет на сайте
Сейчас я допиливаю свой мини скриптер, чтобы программировать уровни без компиляции.
Я не особо программист, больше художник, но вроде пока получается,
до этого я давно на JS делал подобный скриптер в юнити, но с большим
количеством проблем и не оптимизированных моментов.

И хотел спросить, можно ли вместо такой функции:
Код

void Awake() {
    int MaxHP = 10;
    MaxHP = AddAction(MaxHP,1);
}

int AddAction(int num, int num2) {
    return num+num2;
}


Написать вот такую функцию:
Код

void Awake() {
    int MaxHP = 10;
    AddAction(MaxHP,1); // можно ли тут не повторять 2 раза "MaxHP" в строке?
}

int AddAction(int num, int num2) { // похоже тут надо что-то изменить, чтобы num вернула результат назад?
    return num+num2;
}


Чтобы моя функция AddAction вернула данные сразу в MaxHP, то есть чтобы на выходе MaxHP стал равен 11,
я где-то давно встречал, что можно вернуть данные назад в вводную переменную в функции, но может быть это был не C#,
а другой язык, и я даже не знаю как загуглить, ибо не знаю как это назвать правильно по английски.

Возможно что-то нужно написать в этой строке, рядом с num, чтобы данные назад вернулись оттуда прямо в MaxHP,
но не могу вспомнить даже в каком языке это делал:
Код
int AddAction(int num, int num2) {


Добавлено (07 Января 2020, 07:13)
---------------------------------------------
Просто к чему это я хочу сделать, у меня в реальном коде это выглядит малость сложнее,
и два раза повторяется одно и тоже данное из Dictionary, что если даже не замедляет скорость кода,
но точно это выглядит сложно и не оптимизированно:
Код

Game.Group[words[0].Substring(1)].num[words[1]] = AddAction(Game.Group[words[0].Substring(1)].num[words[1]],PlusNumber);


где Game.Group[words[0].Substring(1)].num[words[1]] повторяется два раза, это Dictionary в Dictionary,
довольно массивно, не правда ли?


Сообщение отредактировал alexsilent - Вторник, 07 Января 2020, 07:14
alexsilentДата: Понедельник, 06 Января 2020, 11:10 | Сообщение # 49 | Тема: Несколько вопросов по float
почти ветеран
Сейчас нет на сайте
Цитата Xakep ()
(a >= b)

Вот это для меня было шоком, ибо в старых кодах я часто использовал для float такую проверку.

Про `nearlyEqual`, спасибо! Погуглю насколько быстрая эта операция.
alexsilentДата: Понедельник, 06 Января 2020, 08:52 | Сообщение # 50 | Тема: Несколько вопросов по float
почти ветеран
Сейчас нет на сайте
drcrack, похоже и правда стоит отказаться от float в большинстве своих переменных. Спасибо)

Сообщение отредактировал alexsilent - Понедельник, 06 Января 2020, 08:53
alexsilentДата: Понедельник, 06 Января 2020, 08:26 | Сообщение # 51 | Тема: Несколько вопросов по float
почти ветеран
Сейчас нет на сайте
Цитата drcrack ()
"0.02 HP" вообще не имеет смысла т.к. HP это health (hit) point и он неделим по определению

У меня в ролевой игре, если уровень слишком маленький, то будет отниматься здоровье меньше, чем 1, это главная причина,
почему я хочу оставить float, но боюсь что оно также и не точные параметры имеет.
Не знаю как сделать, чтобы были и сотые доли, и числа точные, и не ниже 0.01.


Сообщение отредактировал alexsilent - Понедельник, 06 Января 2020, 08:28
alexsilentДата: Понедельник, 06 Января 2020, 07:01 | Сообщение # 52 | Тема: Несколько вопросов по float
почти ветеран
Сейчас нет на сайте
drcrack, а как быть с другими переменными, например Health? Какие там копейки? Просто иногда в игре может нужно отнять 0.02 HP например. Там тоже в уме держать, что 1000 HP, это значить 10.00 HP на самом деле?

Добавлено (06 Января 2020, 07:04)
---------------------------------------------
afq, Спасибо, погуглю, не знаю пока ничего про это. Если там также нестабильно работает проверка "if" как во float, то не очень хорошая перспектива.


Сообщение отредактировал alexsilent - Понедельник, 06 Января 2020, 07:05
alexsilentДата: Понедельник, 06 Января 2020, 06:36 | Сообщение # 53 | Тема: Несколько вопросов по float
почти ветеран
Сейчас нет на сайте
Цитата drcrack ()
Цитата
>>PS в идеале я уже думал использовать только int числа, вместо float, например int = 100, это значить 1.00f,

именно так это и сделано в 99.9999% приложений и игр


А как это реализуют? Есть ли английское название у этого феномена, чтоб погуглить?!
Или разработчики просто в уме держат, что 100 = 1.00f, а там где это число надо вывести на экран снижают на два нуля?
Хотелось бы не запутаться, чтоб в уме не держать, но как реализовать, что-то идеи не приходят.


Сообщение отредактировал alexsilent - Понедельник, 06 Января 2020, 06:39
alexsilentДата: Понедельник, 06 Января 2020, 05:07 | Сообщение # 54 | Тема: Несколько вопросов по float
почти ветеран
Сейчас нет на сайте
1) Какое максимальное число у float? Могу ли я хранить в нём большие числа, например миллиард?
В документации пишут число 3.402823466 E + 38, но я не понимаю, что тут написано,
как понять в обычных числах?

2) Можно ли как-то сделать так, чтобы float имел только два знака после запятой 1000.03 например.
Мне не нравится, что у float может запятая далеко уходить. Есть ли какие-то преднастройки float в C# или придётся
работать с числами типа 1000.03034045? Мне бы хватило сотых долей, абсолютно для любых моих нужд в игре,
ибо мне не нужна сверх точность в тысячных долях.
3) Насколько точно оператор if проверяет float? Может ли оператор ошибиться?
Просто я как-то встречал феномен, когда в юнити я ставлю координаты 0.05, а через некоторое время юнити
мне портит это число превращая его в 0.049999999999, хз с чем это связано, но я боюсь, что однажды
проверка не пройдёт. Например поставлю float = 4, а юнити мне сделает 3.999999999 и if пропустит,
я не знаю как оно работает, но мало ли.

PS в идеале я уже думал использовать только int числа, вместо float, например int = 100, это значить 1.00f,
Но как сделать подобный трюк, чтобы C# у всех для меня нужных int, считал последние две цифры как сотые доли?


Сообщение отредактировал alexsilent - Понедельник, 06 Января 2020, 05:45
alexsilentДата: Пятница, 03 Января 2020, 15:33 | Сообщение # 55 | Тема: Как разбить string на слова убрав все пробелы [РЕШЕНО]
почти ветеран
Сейчас нет на сайте
skillfx, спасибо!
В конечном итоге у меня так получилось, вроде работает:
Код

string[] words= word.Split(new char[]{ ' ' }, System.StringSplitOptions.RemoveEmptyEntries);
alexsilentДата: Пятница, 03 Января 2020, 14:02 | Сообщение # 56 | Тема: Как разбить string на слова убрав все пробелы [РЕШЕНО]
почти ветеран
Сейчас нет на сайте
Пишу свой примитивный мини-язык, для программирования диалогов, выборов в диалогах,
скрипты на уровнях без компиляции и другие вещи, где нужно использовать такой быстрый метод,
а также скрипт автоматически ставится на паузу во время диалога или при паузе игры,
я уже всё это делал на JS, теперь переношу скриптер на C#.
В скрипте все слова должны быть отделены пробелом, но иногда я могу ошибиться и написать 2 пробела,
и тогда между двух пробелов Split(" "[0]) команда сделает пустое слово, а мне пустые слова не нужны.

Нашёл инфу, как разбить String на слова и убрать пробелы и пустые слова, но
мой код не работает, не могу понять, что не так я написал:
Код

string word = "dff dfg    fggk    gj d  f f gj  rtyyiyi gj";
string[] words= word.Split(" "[0], StringSplitOptions.RemoveEmptyEntries);


Дебаггер юнити пишет:
The name 'StringSplitOptions' does not exist in the current context

Не понимаю концепцию разбития на слова без пустых слов, но мне кажется это легко делать в C#,
не создавая два массива, как бы я раньше делал в JS, создав массив из Split, а потом перегоняя всё в другой
массив попутно пропуская пустые слова.


Сообщение отредактировал alexsilent - Пятница, 03 Января 2020, 15:35
alexsilentДата: Пятница, 03 Января 2020, 13:05 | Сообщение # 57 | Тема: Нормальная ли практика использовать словарь внутри словаря
почти ветеран
Сейчас нет на сайте
Цитата seaman ()
Ну так используйте для скриптинга Lua, в чем дело то? Куча фреймворков есть

Я находил несколько старых Lua плагинов для юнити, а практически всегда старые плагины не работают для новой юнити,
у меня 90% старые плагины (которые я раньше использовал) выдают ошибки, и я даже не стал пробовать.
Есть ли какой-нибудь актуальный Lua плагин для юнити на текущий момент?
И что делать, если юнити снова обновится так, что старые плагины перестанут работать, а обновления не последует на этот плагин? Обычно оно так и происходит, поэтому я старался использовать всё своё, даже если оно кривое,
смогу понять, где у меня ошибки, и как поправить.


Сообщение отредактировал alexsilent - Пятница, 03 Января 2020, 13:27
alexsilentДата: Четверг, 02 Января 2020, 16:01 | Сообщение # 58 | Тема: Нормальная ли практика использовать словарь внутри словаря
почти ветеран
Сейчас нет на сайте
Спасибо!
Хотя думал будет много критики в сторону моего способа)

Добавлено (02 Января 2020, 16:11)
---------------------------------------------
Про dynamic прикольная статья, звучит как переменные в Lua, мне очень нравится программирование на Lua из-за динамических переменных, когда не уверен какая переменная будет.
Хотя кажется (если не ошибаюсь) тут на форуме я видел комменты в духе, что лучше не пользоваться такими переменными в C#.


Сообщение отредактировал alexsilent - Четверг, 02 Января 2020, 16:11
alexsilentДата: Четверг, 02 Января 2020, 15:55 | Сообщение # 59 | Тема: Есть ли возможность создавать сокращённые функции на C#
почти ветеран
Сейчас нет на сайте
Хочу создать тонну своих глобальных функций, но обычно доступ к ним имеет много букв.
Например:
Код

Game.MyFunction();

сделав просто статичную функцию в скрипте Game

Но Можно ли сделать такую функцию, с более коротким названием?
Чтобы получать доступ к ней из любого скрипта без увеличения количества букв:
Код

MyFunction();


PS для меня сократить на 5 символов очень приоритетно, чем меньше букв, тем легче я понимаю что написано в скрипте.
Куда хуже начинаю воспринимать код, когда там постоянно эти длинные юнитовские команды типа
SendMessageOptions.DontRequireReceiver - это просто для меня издевательство, эти бесконечные поля из символов.
Я люблю сокращённые имена, как в старых добрых Basic и Lua скриптах)


Сообщение отредактировал alexsilent - Четверг, 02 Января 2020, 15:59
alexsilentДата: Четверг, 02 Января 2020, 15:39 | Сообщение # 60 | Тема: Нормальная ли практика использовать словарь внутри словаря
почти ветеран
Сейчас нет на сайте
Подумал, что для моего стиля программирования подходит хранить часть данных в словарях,
которые находятся в словарях. Нормальная ли практика использовать словарь внутри словаря на C#?

У меня это выглядит так в коде:


Ибо я всё ещё только перехожу на C# с JS, и не совсем уверен будут ли проблемы с утечкой или другие траблы.
Если не будет проблем, но будет медленнее, чем у крутых современных способов хранения данных,
то ничего страшного, мои игры камерные, с небольшим количеством персонажей и объектов на экране,
и я почти не программист, больше художник, так что мне бы подошёл такой способ.

Ибо очень удобно свой мини-язык для скриптинга уровней написать и потом легко доставать из dictionary через имя string любую мне нужную переменную с помощью этого языка.
Как бы это главная цель зачем хочу использовать dictionary, чтобы был лёгкий доступ к переменным через название переменной. Но не уверен, будут ли утечки с подобной структурой.


Сообщение отредактировал alexsilent - Четверг, 02 Января 2020, 16:07
Форум игроделов » Записи участника » alexsilent [849]
Поиск:

Все права сохранены. GcUp.ru © 2008-2020
free games download
Рейтинг