Среда, 15 Августа 2018, 04:57

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: beril  
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Переход с UnityScript на Csharp для не программиста
Переход с UnityScript на Csharp для не программиста
alexsilentДата: Вторник, 17 Июля 2018, 10:39 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте
Новая версия юнити полностью отказалась от JavaScript и перешла только на C#,


Но я не программист, а художник, мне это очень тяжело давалось, но я справился с изучением явыскрипта,
и даже из-за этого сразу понял в С# некоторые моменты, но не все, например:

Как делать динамический массив? В юнискрипт - был Array, а тут советуют перейти на List,
но я не программист и увидев документацию на сайте майкрософт малость прифигел:

https://msdn.microsoft.com/ru-ru/library/system.array(v=vs.110).aspx



Можно вкратце объяснить как использовать List на примере Array?

1) Как инициализировать?
2) Как добавлять Add и Push
3) и как удалять один слот RemoveAt?
4) Как очищать весь массив?



мои арты и страница на Девиантарте
моя игра в духе Fallout
моя леталка


Сообщение отредактировал alexsilent - Вторник, 17 Июля 2018, 10:50
InsaneSystemsДата: Вторник, 17 Июля 2018, 10:48 | Сообщение # 2
частый гость
Сейчас нет на сайте
Цитата
1) Как инициализировать?

Код
List<int> yourList = new List<int>();

Данный код создаёт пустой список типа int (целочисленный). Дальше в него можно добавлять элементы.

Цитата
2) Как добавлять Add и Push

Код
yourList.Add(1);

В скобках - ваш объект. В данном случае это число, поскольку список типа int. Элемент добавится в конец списка.

Цитата
3) и как удалять один слот RemoveAt?

Код
yourList.RemoveAt(0);

Где 0 - позиция удаляемого элемента.

Цитата
4) Как очищать весь массив?

Код
yourList.Clear();

Полная очистка всего списка.

Почему, собственно, вы не можете остаться на версии 2018.1? Там поддерживается UnityScript. А, как известно, погоня за последними версиями - не всегда хорошо.

P.S.: справка microsoft - ад. Лучше уж найдите что-то поадекватнее. Можно почитать тут первые две главы - metanit.com. Написано простым русским языком, коротко, с примерами. Правда насчёт качества уроков по основам я не знаю, я их изучал не там.


The Lasers!
Статьи по созданию игр и программированию


Сообщение отредактировал InsaneSystems - Вторник, 17 Июля 2018, 10:52
alexsilentДата: Вторник, 17 Июля 2018, 11:04 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
InsaneSystems, Спасибо большое! То что нужно.

Цитата InsaneSystems ()
Почему, собственно, вы не можете остаться на версии 2018.1? Там поддерживается UnityScript. А, как известно, погоня за последними версиями - не всегда хорошо.


Это да, просто там иногда хорошие вещи добавляют, в будущем я буду урезан в плане 2д новых фич. Поэтому придётся этот долгострой делать на 2018.1 и учить плавно С# , чтобы переходить плавно на новые версии юнити в будущем написав весь код с нуля.

Добавлено (17 Июля 2018, 11:04)
---------------------------------------------

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


Код
MyGlobalScript.MyFunction();


как будто это системные скрипты сделанные самой юнити, типа:

Код
Application.LoadLevel("MyLevel");


где функция не Static, потому-что функция статик всегда требует чтобы были все переменные были статичные,
а если я захочу там инициализировать пару локальных переменных, пока веду вычисления в функции,
то например в яваскрипте выдаётся ошибка, и требует чтобы все переменные были статичные, мне почему-то кажется,
что в C# легко сделать реализацию доступа к функции без Static свойства на функции, но может быть я ошибаюсь


мои арты и страница на Девиантарте
моя игра в духе Fallout
моя леталка


Сообщение отредактировал alexsilent - Вторник, 17 Июля 2018, 11:10
InsaneSystemsДата: Вторник, 17 Июля 2018, 11:14 | Сообщение # 4
частый гость
Сейчас нет на сайте
alexsilent, это точно так же делается с помощью static, и все переменные скрипта тоже должны быть статик (кроме внутренних в самих функциях/методах). Как альтернатива - использовать паттерн Singleton. Он очень прост в понимании даже без особых знаний C#, почитайте. Если коротко, в скрипте можно написать вот такой код:
Код

public class YourScript : MonoBehaviour
{
    public static YourScript instance {get; private set;}

    void Awake()
    {
         instance = this;
    }

    public void TestMethod()
    {
         Debug.Log("It works");
    }
}


А потом метод TestMethod можно вызвать из другого скрипта вот так:
Код
YourScript.instance.TestMethod();


Но тогда этот скрипт должен всегда быть на одном из объектов сцены. Как вариант - отказаться от MonoBehaviour, но это будет чуть сложнее.

P.S.: в идеале это всё делается более красиво, я для простоты понимания укоротил реализацию.


The Lasers!
Статьи по созданию игр и программированию


Сообщение отредактировал InsaneSystems - Вторник, 17 Июля 2018, 11:16
zhuravelsvДата: Вторник, 17 Июля 2018, 11:46 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Цитата InsaneSystems ()
справка microsoft - ад.

msdn конечно сложная, но очень детальная, но вместо неё уже есть новая docs.microsoft.com, там всё тоже очень понятно и с кучей примеров:
https://docs.microsoft.com/ru-ru/dotnet/standard/get-started
pixeyeДата: Вторник, 17 Июля 2018, 12:27 | Сообщение # 6
Red Winter Software
Сейчас нет на сайте
Настольная библия по Csharp - https://www.dotnetperls.com

Battlecruiser - одна из моих игр
ACTORS - мой фреймворк на Unity3d

alexsilentДата: Вторник, 17 Июля 2018, 12:40 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
Цитата InsaneSystems ()
Как альтернатива - использовать паттерн Singleton. Он очень прост в понимании даже без особых знаний C#, почитайте. Если коротко, в скрипте можно написать вот такой код:


Спасибо! Жаль что нельзя делать как-то попроще, я почти так и делал в ЯваСКрипте, когда мне надоело
каждую функцию делать статичной, то сделал неуничтожаемый объект (после перезагрузки уровня),
и добавил почти такой же код на ЯваСкрипте в своих проектах:

Код
static var it : MyThisScript;
function Awake() {
// это чтобы не дублировалось, в каждом уровне такой объект есть, и удаляются, те кто создан позже
  if (It) {
   Destroy(gameObject);
   return;
  }
  It = this;
  DontDestroyOnLoad(gameObject);
}
function MyFunction() {
print("Ok!");
}


и потом обращался также:

Код

MyThisScript.it.MyFunction();


С другой стороны хорошо, что не придётся менять код в этом вопросе и почти также программировать на C#.)

Добавлено (17 Июля 2018, 12:40)
---------------------------------------------

Цитата zhuravelsv ()
msdn конечно сложная, но очень детальная, но вместо неё уже есть новая docs.microsoft.com, там всё тоже очень понятно и с кучей примеров:
https://docs.microsoft.com/ru-ru/dotnet/standard/get-started


Цитата pixeye ()
Настольная библия по Csharp - https://www.dotnetperls.com


Наверное самая большая проблема всех этих документаций, то что в них примеры не из юнити и очень сложно ориентироваться, если я не особо варю в программировании. :( Потому-что я всегда учился методом тыка, ищу
конкретный пример который будет 100% работать в этом движке и пробую тестировать, что-то менять, так и научился,
методом тыка)) потом уже начал больше вникать, но всё ещё примеры с незнакомыми функциями меня путают
и я не понимаю, что тут вообще написано иногда, потому в документации самой юнити я нормально ориентируюсь,
ибо все функции знакомы , даже если это пример на C#, с которым я не особо знаком.

И ещё важно чтобы код был очень коротким, чтобы была только самая важная суть в 1-10 строк.)

Но всё равно спасибо большое, попробую вникнуть, может быть будет очень полезной!


мои арты и страница на Девиантарте
моя игра в духе Fallout
моя леталка


Сообщение отредактировал alexsilent - Вторник, 17 Июля 2018, 12:46
pixeyeДата: Вторник, 17 Июля 2018, 13:05 | Сообщение # 8
Red Winter Software
Сейчас нет на сайте
ты просто спрашивай моменты которые не понимаешь. Тем более если ты выучил Unityscript у тебя не должно будет возникнуть больших проблем.

Battlecruiser - одна из моих игр
ACTORS - мой фреймворк на Unity3d



Сообщение отредактировал pixeye - Вторник, 17 Июля 2018, 13:20
alexsilentДата: Вторник, 17 Июля 2018, 13:30 | Сообщение # 9
заслуженный участник
Сейчас нет на сайте
Цитата InsaneSystems ()
Цитата
2) Как добавлять Add и Push

Код
yourList.Add(1);

В скобках - ваш объект. В данном случае это число, поскольку список типа int. Элемент добавится в конец списка.


А как в начало списка добавлять? Как Push в Array на UnityScript


мои арты и страница на Девиантарте
моя игра в духе Fallout
моя леталка
InsaneSystemsДата: Вторник, 17 Июля 2018, 13:55 | Сообщение # 10
частый гость
Сейчас нет на сайте
alexsilent,
Код
yourList.Insert(0, item);

Как вариант, вот так. Добавляешь item в первую позицию, сдвигая остальные.


The Lasers!
Статьи по созданию игр и программированию
alexsilentДата: Вторник, 17 Июля 2018, 14:46 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
Цитата InsaneSystems ()
Как вариант, вот так. Добавляешь item в первую позицию, сдвигая остальные.

О, так можно добавлять вообще на любую позицию?! Круто!


мои арты и страница на Девиантарте
моя игра в духе Fallout
моя леталка
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Переход с UnityScript на Csharp для не программиста
  • Страница 1 из 1
  • 1
Поиск:

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