Суббота, 08 Мая 2021, 21:28

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » alexsilent [872]
Результаты поиска
alexsilentДата: Четверг, 16 Июля 2020, 10:23 | Сообщение # 21 | Тема: Странная ошибка компилятора C# в Unity
почти ветеран
Сейчас нет на сайте
drcrack, Storm54, GMassta, спасибо ребята! Я просто привык с JS, что не обязательно объявлять null,
буду знать!

Цитата GMassta ()
if(bl == null) return;


Говоря об этой строке, я часто ещё со времён JS, проверяю вот так:

Код
if(!bl) return;


Можно ли так в С# проверять? Просто сам C# вроде не ругается на мою строку и всё нормально работает.


Сообщение отредактировал alexsilent - Четверг, 16 Июля 2020, 10:23
alexsilentДата: Четверг, 16 Июля 2020, 09:25 | Сообщение # 22 | Тема: Странная ошибка компилятора C# в Unity
почти ветеран
Сейчас нет на сайте
Код
// Создание Матч3 Блока
void CreateBlock(int x,int y) {
    Block bl;
    for (int a = 0; a<1000; a++) { // Цикл перебора удачного шанса выпадения, чтобы редкие блоки не выпадали часто
        bl = Blocks[Random.Range(0,Blocks.Length)]; // здесь будет полюбому хотя бы один раз инициализирована "bl"
        if (Random.Range(0.1f,99.9f)<=bl.Chance) {break;} //Шанс выпадения блока от 0% до 100%
    }
    Game.Last = Instantiate(bl.gameObject); // создание клетки
    // КОМПИЛЯТОР РУГАЕТСЯ НА ЭТУ СТРОКУ, хотя из кода видно,
    // что переменная "bl" в любом случае будет инициализирована в цикле "for"
}


компилятор выдаёт ошибку:
"Assets/SCRIPTS/Match3/Match3.cs(63,27): error CS0165: Use of unassigned local variable `bl'"

Чтобы ошибки не было, вместо
Код
Block bl;

приходиться писать строку
Код
Block bl = Blocks[Random.Range(0,Blocks.Length)];

считай два раза одну и ту же строку писать, при инициализации переменной и потом в цикле



Сообщение отредактировал alexsilent - Четверг, 16 Июля 2020, 10:07
alexsilentДата: Четверг, 09 Июля 2020, 15:33 | Сообщение # 23 | Тема: Есть ли способ сократить эти строки кода
почти ветеран
Сейчас нет на сайте
В конечном итоге пришлось сделать мини функции для:
position (3 функции),
localPosition (3 функции),
localScale (3 функции),
localEulerAngles (1 функция на Z ибо 2D игра)
и Color (4 функции)
Или может стоит забить на эти функции и просто вектор в нужном месте подставлять, чтобы манипуляции провести с одной частью вектора или цвета.


Сообщение отредактировал alexsilent - Четверг, 09 Июля 2020, 15:36
alexsilentДата: Понедельник, 06 Июля 2020, 10:43 | Сообщение # 24 | Тема: Есть ли способ сократить эти строки кода
почти ветеран
Сейчас нет на сайте
pixeye, Спасибо большое за этот код, потестил и выглядит круто, особенно круто то что
в эту static функцию можно добавлять локальные переменные.
Код

public static class HelperTransform
  {
    public static void SetZ(this Transform transform, float z)
    {
      var position = transform.position;
      position.z         = z;
      transform.position = position;
    }
  }


только я не понял вот эту фразу
Код
this Transform transform
this почему-то стоит в странном месте, в инициализации,
я попытался сделать свою такую функцию и не получилось.
Код

public static bool isEmpty(this string string) { //CHECK EMPTY STRING
  if (this==null || this=="") return true;
  return false;
    }


Сообщение отредактировал alexsilent - Понедельник, 06 Июля 2020, 10:55
alexsilentДата: Воскресенье, 05 Июля 2020, 15:27 | Сообщение # 25 | Тема: Есть ли способ сократить эти строки кода
почти ветеран
Сейчас нет на сайте
Цитата pixeye ()
Не рекомендую

public static class HelperTransform
{
public static void SetZ(this Transform transform, float z)
{
var position = transform.position;
position.z = z;
transform.position = position;
}
}


Может я не правильно понял, и это относилось не к коду ниже, но да ладно)

Придётся писать 4 новых функции, чтобы работать с отдельными осями:
Код
SetX(transform, 1);
SetY(transform, 1);
SetZ(transform, 1);
TurnZ(transform, 1); // для поворота по оси Z
alexsilentДата: Воскресенье, 05 Июля 2020, 14:06 | Сообщение # 26 | Тема: Есть ли способ сократить эти строки кода
почти ветеран
Сейчас нет на сайте
Цитата pixeye ()
Вообще форма ниже отвратна


pixeye, ну я тут полностью согласен, что мой код не очень, другой вопрос как оптимизировать?

Ведь, тот твой код, я так понял, тоже не самый лучший или я просто не понял эту фразу:
Цитата pixeye ()
Не рекомендую


Сообщение отредактировал alexsilent - Воскресенье, 05 Июля 2020, 14:40
alexsilentДата: Воскресенье, 05 Июля 2020, 06:40 | Сообщение # 27 | Тема: Есть ли способ сократить эти строки кода
почти ветеран
Сейчас нет на сайте
Всё ещё перехожу с JS на C# в Unity.
Есть ли возможность как-то сократить эти длинные строки, которые на JS выглядели,
намного короче и более читабельнее или это максимум, что можно сделать в C#?!

Unity Script (JS)
Код
transform.localPosition.z = initPos.z;
transform.localScale.x = variable;

C#
Код
transform.localPosition = new Vector3(transform.localPosition.x,transform.localPosition.y,initPos.z);
transform.localScale = new Vector3(variable,transform.localScale.y,transform.localScale.z);


PS У меня просто глаза разбегаются, когда смотрю на тот же самый код, но намного длинее по символам.


Сообщение отредактировал alexsilent - Воскресенье, 05 Июля 2020, 06:42
alexsilentДата: Среда, 01 Июля 2020, 08:33 | Сообщение # 28 | Тема: Пытаюсь разобраться с Inheritance в Unity
почти ветеран
Сейчас нет на сайте
drcrack, ну я согласен с тем что я делаю не эффективно и криво) я больше художник, чем программист , и очень долго простые вещи программирую, сейчас буду в третий раз переписывать ядро на юнити, на основе новых знаний.)



Добавлено (01 Июля 2020, 10:50)
---------------------------------------------
Вот кстати, если в уроке доходчиво на примерах объясняют зачем нужен этот функционал, то такие уроки я могу ещё осилить,
а если ещё и пример очень интересный и очень короткий (чтобы с ходу понять), то вообще круто, но такие учителя/уроки редкость, чаще урок просто выглядит так: "Вот вам базовое знание потому-что это надо знать."
Ну как-то так, совсем не понятно, где я буду это применять и буду ли вообще, не очень мотивирует.


Сообщение отредактировал alexsilent - Среда, 01 Июля 2020, 10:53
alexsilentДата: Вторник, 30 Июня 2020, 20:40 | Сообщение # 29 | Тема: Пытаюсь разобраться с Inheritance в Unity
почти ветеран
Сейчас нет на сайте
Vostrugin, Спасибо Большое! Прикрутил словарь) всё работает, кроме [SerializedField],
компилятор ругается из-за того что рядом стоит словарь, видимо его нельзя показать, ну неважно,
можно и обычным кодом переменные словарю добавлять, как я вначале и планировал. lovegcup
alexsilentДата: Вторник, 30 Июня 2020, 20:20 | Сообщение # 30 | Тема: Пытаюсь разобраться с Inheritance в Unity
почти ветеран
Сейчас нет на сайте
лол, у меня в первом сообщении есть ответ, просто я вначале не понимал как оно работает, а сейчас перечитал и нашёл
Код
base.Awake();
хотя ещё не тестировал)

Добавлено (30 Июня 2020, 20:22)
---------------------------------------------
pixeye, спасибо ещё раз!Мне C# теперь нравится больше JS (Unity Script), хотя бы потому-что даже если там тоже это было, то я раньше не знал, а теперь понимаю как упростить код в юнити. :3


Сообщение отредактировал alexsilent - Вторник, 30 Июня 2020, 20:23
alexsilentДата: Вторник, 30 Июня 2020, 19:33 | Сообщение # 31 | Тема: Пытаюсь разобраться с Inheritance в Unity
почти ветеран
Сейчас нет на сайте
pixeye, Спасибо Большое за пример!

Цитата pixeye ()
"мне вроде надо, но понимать не хочу"

Я конечно ленивый, но если это всё-таки очень важный момент, то стоит изучить. :)

Добавлено (30 Июня 2020, 19:51)
---------------------------------------------
pixeye, попытался создать класс на твоём примере, и получил ошибку, видимо потому-что
Dog переписала Animal или другие причины, а как сделать так чтобы переменная trans была установлена в базовом скрипте при пробуждении, чтобы лишний раз её не дёргать из Child скриптов?
То есть чтобы 2 Awake сработали, вначале у базы, потом у чайлда.

Код

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Animal : MonoBehaviour {
    public Transform trans;
    public virtual void Awake() {
       print("Awake Base!");
       trans = transform;
    }
    public virtual void Vocal(){
       Debug.Log("Basic Animal Sound");
    }
}


Код

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Dog: Animal{
    public override void Awake() {
      print("Awake Child!");
      trans.position = new Vector3(0,0,0);
    }
    public override void Vocal(){
       Debug.Log("Woof");
    }
}


Добавлено (30 Июня 2020, 20:00)
---------------------------------------------
хотя убрав override из Awake Dog, все равно получил ошибку, похоже trans переменная не доступна для Dog или хз:



Добавлено (30 Июня 2020, 20:14)
---------------------------------------------
Ещё попробовал такой вариант с базой, вместо Awake поставить Animal, как было в примере урока юнити
с фруктами, но в таком случае с transform вообще нельзя работать, юнити выдаёт ошибку, что Transform тут не место:

Код

public class Animal : MonoBehaviour {
    public Transform trans;
    public Animal() {
     print("Awake Base!");
     trans = transform;
    }
    public virtual void Vocal(){
     Debug.Log("Basic Animal Sound");
    }
}


Сообщение отредактировал alexsilent - Вторник, 30 Июня 2020, 20:26
alexsilentДата: Вторник, 30 Июня 2020, 19:17 | Сообщение # 32 | Тема: Пытаюсь разобраться с Inheritance в Unity
почти ветеран
Сейчас нет на сайте
Цитата Vostrugin ()
В твоём же случае с Dictionary можно не париться. Поехали:

Vostrugin, ого спасибо!!
Как просто выглядит код, кроме одного момента protected readonly пошёл гуглить, ибо первый раз встречаю :)
звучит так как будто переменная только для чтения и нельзя изменять словарь, но в то же время мы его можем менять, странно) пошёл искать инфу.
alexsilentДата: Вторник, 30 Июня 2020, 18:24 | Сообщение # 33 | Тема: Пытаюсь разобраться с Inheritance в Unity
почти ветеран
Сейчас нет на сайте
Всё ещё изучаю C# в юнити.

Не очень понимаю как работает Inheritance вообще в Unity, но например в Game Maker я легко разобрался,
потому-что там не было лишней писанины и просто нужно галочку поставить в определённом месте.

В Unity в уроках нашёл такой пример: https://learn.unity.com/tutorial/inheritance

Вроде всё круто и работает в логах, НО это не объекты юнити, а как бы сами по себе объекты С#,
у которых даже простого transform нет.
Есть ли где (для новичков) примеры с GameObject и inheritance? Чтобы понять как работать с этим.

Я попробовал загуглить и нашёл разные примеры, или это для профессионалов, или это так и нужно,
где даже есть незнакомые понятия virtual и override, стоит ли вообще с этим связываться для новичка,
или лучше другие примеры поискать?
https://forum.unity.com/threads.....525281

Код

class BaseClass : Monobehaviour
{
    public virtual Start()
    {
        Debug.Log("BaseClass.Start()");
    }
}

class ChildClass : BaseClass
{
    public override Start()
    {
        base.Start();
        Debug.Log("ChildClass.Start()");
    }
}


Если честно, я долго делал игры без всяких базовых классов и мне этого хватало, потому не особо хочется сильно глубоко в дебри программирования лезть (и узнавать что такое "virtual", если только это не важное понятие в создании Базовых Классов), просто теперь мне нужна функция, чтобы во всех игровых объектах на уровне был базовый класс с Dictionary, где будут храниться переменные. Что-то типа свои встроенные переменные к которым легко обратиться через String и чтобы это было во всех объектах уровня.


Сообщение отредактировал alexsilent - Вторник, 30 Июня 2020, 18:48
alexsilentДата: Четверг, 18 Июня 2020, 20:02 | Сообщение # 34 | Тема: [GCUP #14] Space Evil Queen
почти ветеран
Сейчас нет на сайте
Цитата DivES ()
alexsilent, да блин, это шутка про книгу «Спасите котика», которая как раз-таки посвящена написанию сценариев (сюжетов); но до неё (до шутки) и правда сложно додуматься, если не знаком с самой книгой.

Полез гуглить книгу) но я просто выбрал самый примитивный вариант сценария, что первое пришло на ум)

Добавлено (21 Июня 2020, 03:37)
---------------------------------------------
Добавил больше экшона, успею или нет, ещё не понятно)

Добавлено (21 Июня 2020, 05:55)
---------------------------------------------
и ещё один скриншот:

Добавлено (23 Июня 2020, 14:53)
---------------------------------------------
Делаю интерфейс и похоже не успею, но зато поизучал Game Maker.

Добавлено (30 Июня 2020, 11:13)
---------------------------------------------
Не успел((
Для создания локаций мне нужно где-то ещё 2-3 дня,а в таком виде, эта игра даже не игра получается.

alexsilentДата: Четверг, 18 Июня 2020, 18:25 | Сообщение # 35 | Тема: [GCUP #14] Itemopolis [2D]
почти ветеран
Сейчас нет на сайте
Найс графоний!
PS думаю тоже купить Aseprite, слишком часто стал встречать эту программу
alexsilentДата: Четверг, 18 Июня 2020, 17:32 | Сообщение # 36 | Тема: [GCUP #14] Space Evil Queen
почти ветеран
Сейчас нет на сайте
DivES, блин, придётся вычеркнуть этот сложный момент в сюжете. crazy

Оформил персонажа и сделал пока простой скрипт управления в GMS, я также параллельно конкурсу,
ещё и учусь в GMS работать, так что не уверен что вообще смогу доделать, но давно планировал научиться GMS,
решил совместить приятное с полезным.


Также персонаж теоретически готов для кастомизации, но не уверен, что смогу сделать разную одежду
и другие части для конкурса, это так просто когда-нибудь на будущее, ибо я люблю кастомизацию в играх :D :


Сообщение отредактировал alexsilent - Четверг, 18 Июня 2020, 17:32
alexsilentДата: Четверг, 18 Июня 2020, 01:50 | Сообщение # 37 | Тема: [GCUP #14] Space Evil Queen
почти ветеран
Сейчас нет на сайте
Движок: GMS 1.4.9
Сюжет коротко: Злая космическая королева украла космического котика с планеты Kitty.
Главная цель - спасти котика и надрать задницу всем врагам.
Общая концепция: Берём стиль Bubba n Stix смешиваем с Comix Zone, добавляем Червяка Джима, Guardian Legend и Ristar и примерная концепция игры готова, если конечно успею)





Сообщение отредактировал alexsilent - Воскресенье, 21 Июня 2020, 05:57
alexsilentДата: Четверг, 18 Июня 2020, 01:15 | Сообщение # 38 | Тема: Конкурс GcUp.ru №14 «Boss Rush»
почти ветеран
Сейчас нет на сайте
Ещё же можно принять участие, а то я даже не создал тему на форуме?! Всё думал, над игрой, и только недавно придумал.
alexsilentДата: Суббота, 13 Июня 2020, 02:36 | Сообщение # 39 | Тема: Как проще писать небольшие уникальные скрипты для Unity
почти ветеран
Сейчас нет на сайте
Ordan, спасибо!
В принципе я примерно так делаю, с некоторыми вариациями, только для другой цели, можно попробовать и для менеджера сделать!)


Сообщение отредактировал alexsilent - Суббота, 13 Июня 2020, 02:44
alexsilentДата: Пятница, 12 Июня 2020, 03:56 | Сообщение # 40 | Тема: Как проще писать небольшие уникальные скрипты для Unity
почти ветеран
Сейчас нет на сайте
Цитата Ordan ()
использую один скрипт в который посылаю какой либо идентификатор

Ordan, а каким образом посылать идентификатор, через SendMessage?! Или есть какие-то другие удобные инструменты, о которых я не знал. Просто ищу какой-нибудь более простой способ решения проблемы.

PS например в Аниматоре есть возможность добавить в дорожку анимации Event, и там видны все функции, которые есть в моём скрипте, можно было бы также без аниматора обойтись, то было бы круто! Но я хз, гуглил по Event-ам разные уроки, но там надо сверху дополнительно программировать прослушку Event-ов, когда в аниматоре Event видит все функции без дополнительных строк кода, а не только те, где я пропишу специальные условия.


Сообщение отредактировал alexsilent - Пятница, 12 Июня 2020, 04:03
Форум игроделов » Записи участника » alexsilent [872]
Поиск:

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