블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2794)
Unity3D (852)
Programming (478)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (234)
협업 (11)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

Random.Range() 함수는 

Random.Range(0, max);

했을 때, 0~(max-1)의 랜덤 값을 반환합니다.

개인적인 생각으로는 유니티는 리스트등의 개수를 받아서 인덱스로 바로 쓸 수 있도록 하려는 목적 같아 보입니다만..
( C#은 Count, Length등 대부분 배열에서 프로퍼티로 개수를 반환하고 있습니다. [예] Random.Range(0, List.Count); )



아무튼 max값은 반환하지 않습니다.

이런 이유로 NGUI는 NGUITools.cs 스크립트에 보시면

static public int RandomRange (int min, int max)
{
if (min == max) return min;
return UnityEngine.Random.Range(min, max + 1);
}

이렇게 max에 +1을 일부러 하고 있는 랜덤 함수를 직접 만들어서 쓰고 있습니다.

랜덤 함수를 사용할 때는 max값이 나와야 되는지 마는지 한 번 생각해보고 쓰는 게 좋을 것 같습니다.


P.s. 제가 처음에 Random.Range() 함수를 쓰면서 입력한 max값이 안나오는 것 같아서 확인해보고 올려봅니다.
       아시는 분들은 다들 아시고 쓰시겠지만, 혹시나 모르시는 분들을 위해 올려봅니다.


[추가]
새싹1단계 Sanoke 2013.05.22 15:25:32 댓글달기 신고
추가적으로... 
함수 파라미터가 int일 경우는 max값이 안나오는 게 맞구요 

static function Range (min : int, max : int) : int 
Description - 
Returns a random integer number between min [inclusive] and max [exclusive] (Read Only). 

float일 경우에는 max값이 나옵니다. 

static function Range (min : float, max : float) : float 
Description - 
Returns a random float number between and min [inclusive] and max [inclusive] (Read Only).

반응형

'Unity3D > Tips' 카테고리의 다른 글

Max Texture Size of iOS Devices  (0) 2013.06.14
게임 중 일시정지 하기  (0) 2013.05.30
유니티 소소한 TIP  (0) 2013.04.05
How to get SceneView Camera?  (0) 2013.03.25
EditorWindow에서 마우스/키보드 입력 체크  (2) 2013.03.22
Posted by blueasa
, |