Генератор случайных целых чисел с#
|
|
Maxplant | Дата: Воскресенье, 24 Апреля 2016, 14:16 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Пишу скрипт генерирующий некую гарту(условно). Появилось необходимость получать в нужный момент случайное число в определенном диапазоне, но стандартный прием компилятор понимать отказался. Подскажите какие методы генерации случайных целых чисел работают в Unity. Заранее благодарен!
Для генерации пытался использовать этот метод:
Код Random x = new Randon (); y = x.Next (от, до);
|
|
| |
Vicka | Дата: Воскресенье, 24 Апреля 2016, 14:36 | Сообщение # 2 |
Another ART
Сейчас нет на сайте
| ты серьезно?
|
|
| |
Maxplant | Дата: Воскресенье, 24 Апреля 2016, 15:12 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Цитата Vicka ( ) ты серьезно? да, серьезно Range возвращает значение типа float а необходимо IntДобавлено (24 апреля 2016, 15:12) ---------------------------------------------
Цитата Vicka ( ) ты серьезно? Прошу прощения, видимо я ослеп и не заметил того, что было черным по белому написано. Благодарю.
|
|
| |
seaman | Дата: Воскресенье, 24 Апреля 2016, 15:13 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| Цитата Maxplant ( ) Range возвращает значение типа float Ты серьезно?
|
|
| |
Maxplant | Дата: Воскресенье, 24 Апреля 2016, 15:20 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Цитата seaman ( ) Ты серьезно? я уже заметил и извинился. Но тогда проблема в другом. Mono Develop выделяет красным Range
|
|
| |
EchoIT | Дата: Воскресенье, 24 Апреля 2016, 15:29 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| Maxplant, Random.Next() тоже вроде инт может возвращать.
Долгожданный анонсик: State of War
|
|
| |
ShortKedr | Дата: Воскресенье, 24 Апреля 2016, 15:47 | Сообщение # 7 |
Renword Studio
Сейчас нет на сайте
| Maxplant, seaman, Vicka, Я так понимаю вы путаете C# с Unity Scripting API. Чистый C# к Unity никакого отношения не имеет) Я конечно понимаю, что мы в разделе Unity но всё же)
Цитата Maxplant ( ) да, серьезно Range возвращает значение типа float а необходимо Int Возвращает то float, но оно дробное только по типу. Другими словами тоже самое что int переведённый в float Делай так UnityEngine.Random.Range(-10, 10);
Или без Unity Scripting API на чистом C#:Код public void Initialize(){ int number = new System.Random().Next(-10, 10); }
И справочки:
Сообщение отредактировал ShortKedr - Вторник, 26 Апреля 2016, 20:46 |
|
| |
8Observer8 | Дата: Вторник, 26 Апреля 2016, 16:52 | Сообщение # 8 |
заслуженный участник
Сейчас нет на сайте
| Цитата ShortKedr ( ) Чистый C# к Unity никакого отношения не имеет) Так категорично? Только ситхи всё возводят в абсолют)) На самом деле нужно говорить какую версию C# поддерживает Unity. Он поддерживает версию 2.0 с некоторыми добавлениями из 3.5
|
|
| |
ShortKedr | Дата: Вторник, 26 Апреля 2016, 16:59 | Сообщение # 9 |
Renword Studio
Сейчас нет на сайте
| Цитата 8Observer8 ( ) На самом деле нужно говорить какую версию C# поддерживает Unity. Он поддерживает версию 2.0 с некоторыми добавлениями из 3.5 А при чём тут это, в MSDN весь справочные материал есть по C#, как и в Unity docs по Unity Scripting API. Всё же нужно иметь представление и отличать изначальный C# и добавления API Unity
|
|
| |
8Observer8 | Дата: Вторник, 26 Апреля 2016, 17:24 | Сообщение # 10 |
заслуженный участник
Сейчас нет на сайте
| Цитата ShortKedr ( ) А при чём тут это, в MSDN весь справочные материал есть по C#, как и в Unity docs по Unity Scripting API. Всё же нужно иметь представление и отличать изначальный C# и добавления API Unity Да, но говорить, что C# в Unity абсолютно не имеет никакого отношения к чистому C# - это неправильно. Чистый C# между своими версиями тоже отличается. Например, в Unity есть поддержка LINQ, который появился в .NET 3.5. Просто Unity поддерживает определённую версию .NET и Mono с определёнными урезками и добавлениями
|
|
| |
ShortKedr | Дата: Вторник, 26 Апреля 2016, 17:50 | Сообщение # 11 |
Renword Studio
Сейчас нет на сайте
| 8Observer8, я не это говорил) Думаю спорить бессмысленно, потому как я вас понимаю. А вот вы меня не допоняли. C# в Unity имеет отношение к изначальному C#, потому как C# есть его прародитель, а вот наоборот нет, как я и говорил) Нельзя использовать функции Unity, программирую на C# и не имея сборки юнитевской.
Цитата ShortKedr ( ) Чистый C# к Unity никакого отношения не имеет)
Просто народ тут начал путать System.Random и Random из Unity API, а это как-то не правильно. Первое сообщение после ТС. Заканчиваем дискуссию)
Сообщение отредактировал ShortKedr - Вторник, 26 Апреля 2016, 17:51 |
|
| |
beril | Дата: Вторник, 26 Апреля 2016, 18:39 | Сообщение # 12 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| Цитата UnityEngine.Random is separate from System.Random Ответ разрабов в одной из веток на форуме о том, что использовать Random.Range или System.Range(вот http://referencesource.microsoft.com/#mscorlib/system/random.cs,bb77e610694e64 caм исходник его кстати)
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
Lertmind | Дата: Вторник, 26 Апреля 2016, 19:07 | Сообщение # 13 |
заслуженный участник
Сейчас нет на сайте
| ShortKedr, ты путаешь язык программирования (С#) и библиотеку/фреймворк (.NET и библиотека Unity). В Unity через Mono поддержка С# версии 3.0 (так что про прародителей это бред) + именованные и необязательные аргументы из C# 4.0. Также через Mono реализуется поддержка .NET Framework (System.Random оттуда), но конечно с урезанным лишним функционалом. Ну и конечно в Unity своя библиотека классов, где есть UnityEngine.Random. И на счёт (int)UnityEngine.Random.Range(-10f, 10f);, это тупо, в Unity есть два перегруженных метода Random.Range для float и int (прочитай в инете про перегрузку методов): public static float Range(float min, float max); public static int Range(int min, int max);
|
|
| |
ShortKedr | Дата: Вторник, 26 Апреля 2016, 20:49 | Сообщение # 14 |
Renword Studio
Сейчас нет на сайте
| Lertmind, Хватит рассуждать про компиляторы Unity)
Цитата Lertmind ( ) Mono реализуется поддержка .NET Framework (System.Random оттуда) C# изначально делался для .NET Framework. Можно сказать - это составляющая языка, набор плюшек) Аналогично как Java со своими плюшками
Цитата Lertmind ( ) И на счёт (int)UnityEngine.Random.Range(-10f, 10f);, это тупо Всё в своей мере тупо и глупо, впрочем как и весь наш мир, если подумать) Скажем так, если бы перегруженного метода для int не было, я бы делал именно так или использовал System.Random. Тем-более у меня есть ощущение, что каст в самой функции всё равно идёт, поэтому это просто более длинная запись и здесь нет ничего глупого
Цитата Lertmind ( ) в Unity есть два перегруженных метода Random.Range для float и int Да, есть) Не увидел) Поправлю
Цитата Lertmind ( ) прочитай в инете про перегрузку методов Как грубо) Она всем известна)
Вопрос закрыт!)
Добавлено (26 апреля 2016, 20:49) --------------------------------------------- beril, =)
Сообщение отредактировал ShortKedr - Вторник, 26 Апреля 2016, 21:00 |
|
| |