Среда, 13 Ноября 2024, 12:00

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Генератор случайных целых чисел с#
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
  • Страница 1 из 1
  • 1
Поиск:

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