출처) 진블로그님 - http://jinblog.kr/123?category=654425
Unity3D 4.2 Base Setting
- Layout - 2by3 가 일반적인 레이아웃
- Unity - Preferences - General - Always Show Project Wizard Check (동시 프로젝트 오픈가능)
- Unity - Preferences - External Tools - External Script Editor 에서 다른 편집기 툴로 변경 가능. (Ex - Microsoft VisualStudio 등)
- 다른 툴로 변경시 Assets - Sync MonoDevelop Project 로 선택해서 실행해야 자동완성이 적용됨.
- Unity - Preferences - External Tools - Image application 을 이용하여 이미지 편집 가능. (Ex - Photoshop 등)
- Assets - 메인창에 있는 프로젝트 메뉴와 같음.
- GameObject - 유니티에서 제공하는 오브젝트 생성 및 관리. (간단한 오브젝트만 생성가능)
- 좌표설정시 Y가 위 / X가 오른쪽/ Z가 뒤
3D 모델링 및 축 관련
- 3DMAX와 AutoCAD를 제외하고 모든 3D툴은 유니티와 같은 좌표를 가짐
- Unity3D는 왼손좌표계를 사용함.
- 일반적으로 디자이너가 3D모델링을 할때 오른손좌표계로 받음. - Z축이 앞으로 보도록 개발자가 디자이너에게 요청해야함.
- X : RED / Y : GREEN / Z : BLUE - 좌표축과 색상을 매치시켜서 본다.
- fbx, 3dx(MAX이전 버젼 확장자), obj, dea 등의 확장자만 Unity3D에 불러올수 있음. (y축이 위, z축이 전방으로 파일을 받아야함)
Unity3D 회전축
- 오브젝트가 앞으로 기우는것은 X축 회전
- 오브젝트 중심으로 뱅글뱅글 도는 것 (캐릭터 회전, 자동차회전) Y축 회전
- 오브젝트가 화투짝처럼 돌때, 주사위 굴릴때, 바람개비 도는 형식은 Z축 회전
Unity3D 스케일링
- 각 축대로 확대 및 축소됨.
- 외부 3D 오브젝트를 가져왔을경우 사이즈 줄이는법
- Object파일 Inspector에서 Scale Factor에서 단위를 줄임.
- Hierarchy로 Object를 가져와서 기본 1m짜리 Cube와 구분하면서 적용한다.
- 절대 Transform에서 사이즈를 줄이면 안됨.(Scale이 1:1:1 을 유지해야 함).
Unity3D 버튼설명
- Global 좌표버튼
- 기즈모가 바뀜.
- 게임을 기준으로 하는 절대좌표.
- World 좌표라고도 불름.
- Local 좌표버튼
- 나를 기준으로 하는 좌표.
- 오브젝트가 바라보는 방향에서 좌표를 계산.
- Global/Local 좌표버튼들은 실제 게임에는 아무 영향이 없고 개발중에서만 영향을 끼침.
- Center 버튼
- 한개 오브젝트 선택시 전혀 영향없음.
- 두개 이상 선택했을때 오브젝트간 중간에 중심좌표가 나타남.
- Command+Shift 누른상태에서 기즈모를 누르고 바닥으로 내리면 자석효과
- Pivot 버튼
- 두개 이상 오브젝트 선택시 마지막으로 선택된 오브젝트 중심으로 좌표가 나타남.
- Persp 모드
- 일명 투시도 모드
- 원근이 있는 모드
- ISO 모드
- isometric의 약자
- 직교투영방식, 등각투영방식이라고 함.
- 오브젝트가 멀리있던 작게 있던 같은 크기로 보임.
- 원근방식이 무시됨.
- Persp / ISO 모드중에서 좌표맞추기가 ISO가 쉬움. 일반적으로 ISO사용.
- Scene에 Gizmos 콤보버튼
- Gizmos(기즈모)의 사이즈를 조정할 수 있음.
Unity3D Object 설명
- Plane
- 눈금하나당 1m 로 계산.
- plane은 솔리드모드가 아닌 서피스모드를 사용 - 사용자에게 보이는 부분만 신경씀.
- plane을 뒤집어버리면 오브젝트가 보이지를 않음. (개념이해필요)
- Inspector에 있는 진한글씨들을 Component라고 함.
- Inspector에 있는 작은글씨들은 Property 및 속성이라고 불림.
- 일반적으로 화면의 중심은, 좌표 0,0,0으로 일반적으로 정하고, 이것은 항상 상대적임.
- Directional Light
- 햇빛처럼 거리는 없고 방향만 있는 빛(Light).
- 물체와 가까워진다고 해서 밝아지지도, 멀어진다고 어두워지지 않음.
- 기즈모를 가지고 작업하는데 불편하지 않게 구석에 쳐박으면 됨.
- Inspector에서 Intensity로 밝기 조정 및 Color로 빛 색상 조정가능 (밝기 기본은 0.5)
- Sphere
- 오브젝트 좌표가 0,0,0으로 안될수 있기에 톱니바퀴 버튼에서 'Reset Position'을 하면 0,0,0으로 설정됨.
- Component - Rigidbody 선택시 중력이 적용됨.
- Rigidbody - Use Gravity는 지구의 중력을 사용함. / 미체크시 '원'오브젝트가 굴러가지 않음.
- Main Camera
- 원하는 좌표에 두고 사용하면 됨.
- 일반적으로 X좌표는 0으로 맞춰놓고 사용함.
- Rotation 을 건드린 카메라는 Global좌표상태에서 움직여야 좌표들이 안깨짐.
- 화면비율은 멀티플랫폼으로 만들어야 하기때문에 'Free Aspect'로 맞춰놓고 사용.
- Sound Clip (Audio Source)
- 소리는 Main Camera가 들음.
- Play On Awake 체크시 시작과 동시에 소리가 발생.
- Hierarchy Object
- 각 Object끼리는 겹칠 수 있으며, 자식과 부모관계를 가진다.
- Object가 겹치면 움직일때 같이 움직임.
- Transform
- 위치정보만 가지고 있음.
- prefab으로 선언된 것은 무조건 Transform으로 선언해야함.
- GameObject
- 모든 정보를 가져올 때 사용.
Unity3D Assets 설명
- Physic Material
- Bounciness - 반사정도
- Friction Combine, Bounce Combine - 반사되었을때 반응설정.
- 원하는 오브젝트에 끌어서 넣어야함.
- Material
- 색상 및 텍스쳐 적용가능.
- 오브젝트에 비쥬얼을 주기위한 기능.
- Image
- Material에 Image를 적용할 수 있음.
- 적용 확장자는 PNG, JPG, BMP, PSD 등을 사용할 수 있음.
- 단, AI등 벡터이미지파일들은 적용할 수 없음. (비트맵파일만 사용가능)
- 이미지를 오브젝트에 적용시 Inspector에서 Material 속성에서 Tiling x, y 를 -1로 변경
- 적당한 이미지 사이즈 확인하려면 RGB - Mipmaps로 변경후 색상으로 확인.
- Import Package - Script - SmoothFollow
- 카메라가 자연스럽게 Target을 쫓아다니는 스크립트.
- 카메라에 Script를 적용하고 Target을 끌어다가 넣어주면 됨.
- Import Package - Skyboxes
- 하늘에 관한 Assets Package들.
- 각 날씨, 시간마다 하늘의 대한 데이터들이 있음.
- 메인카메라에게 그냥 주면 안들어가짐 - 메인카메라에서 Component - Rendering - Skybox 추가후 적용.
Unity3D Method 설명
- Event 함수는 모두 On으로 시작함.
- Start() : 최초 파일로드시 실행. Init역할.
- Update() : 게임이 실행되는동안 반복적으로 실행되는 함수. Loop됨.
- Update함수는 실시간으로 실행되는 것이 아니라 함수가 끝난후 한꺼번에 실행함.
- OnCollisionEnter(coll : Collision) : Collision 충돌시 자동으로 함수호출. 이벤트함수. 인자값으로 충돌된 오브젝트를 가져옴. - 둘중 한 오브젝트는 Rigidbody가 있어야함.
- audio.Play() : 오브젝트에 들어있는 Audio Clip 소리 실행.
- Time.deltaTime : 현재프레임과 직전프레임간 사이. (사이의 절대적. 물리적인 시간)
- 모든 시간계산관련만 deltaTime을 사용함.
- transform.Translate(Vector3) : transform은 스크립트파일을 가지고 있는 객체. Translate는 객체를 이동하는 함수. (Vector3(x,y,z)는 공간객체. 공간을 표기하기도 하지만, 이동할때 어느 좌표로 이동할 것인지도 정하기도 함.)
- Vector3(x, y, z)를 써야하지만 Unity3D에서는 Vector3.forward, back, left, right, up, down을 이용하여 더 쉽게 사용할 수 있음.
- transform.Translate(Vector3.forward * speed, Space.World) 사용시 Global(World)좌표로 적용됨.
- Input.GetAxis(String keyType) : 키보드 입력값을 받아올때 사용.
- "Vertical", "Horizontal" 등 타입을 넣으면 -1.0 ~ +1.0 값을 리턴해줌.
- "Vertical", "Horizontal" 등 타입을 넣으면 -1.0 ~ +1.0 값을 리턴해줌.
- Time.smoothDeltaTime : 현재프레임과 직전프레임간 사이의 평균적인 시간.
- Object 움직임이 부드러워짐.
- 움직임을 구현할때 smoothDeltaTime을 사용.
- Input.GetKeyDown(KeyCode.key) : KeyCode에 해당하는 키가 눌렸을때 Bool 값으로 반환
- Input.GetButtonDown(String keyType) : Insfector - InputManager에 있는 Type으로 사용가능.
- AudioSource.PlayClipAtPoint(soundObject, position) : 원하는 위치에서 사운드오브젝트 재생
- soundObject : AudioClip 파일을 선택.
- position : 일반적으로 transform.localPosition 으로 현재오브젝트의 현위치를 선택함.
- transform.eulerAngles : Inspector에 있는 Rotation에 있는 x, y, z를 각도로 변환하여 Vector3로 반환 (60분법 각도 읽기)
- Mathf.Clamp(float Angle, maxAng, minAng) : 실수형 반환. 최소값, 최대값으로 제한하여 넘어갈경우, max, min으로 변환하여 반환함.
- Instantiate(prefab, position, rotation) : 객체 생성하여 화면에 보여줌.
- prefab - 원하는 오브젝트를 생성.
- position - 원하는 위치 지정.
- rotation - 생성시 회전각도 지정.
- (Transform object).rigidbody.AddForce(transform.forward * power) : rigidbody적용과 함께 원하는 방향으로 원하는 힘과 함께 적용.
- power : 힘. 질량에 따라 달라짐.
- OnTriggerEnter(Collider coll) : 충돌판정 Event. 충동시 자동 호출됨.
- 두물체중에 어느 하나가 "Is Trigger" 가 체크 되어 있을때 호출됨.
- Destroy(GameObject) : 인자값에 해당하는 GameObject를 삭제시킴. (메모리 해제)
- Destroy(GameObject, 2); : Start함수에 정의시 2초후에 GameObject가 제거됨.
- Tag : Inspector에서 Tag를 지정하여 Object를 관리 및 접근할 수 있음.
- Ex) coll.tag == "WALL" 이렇게 쓰면 BOOL값으로 반환하여 처리할 수 있음.
Unity3D Move 관련
- 기존 이동 관련은 매 프레임마다 이동할 거리를 넣음.
- Unity3D에서는 이동할때에 속도(m/s)를 지정하여 처리함.
- Inspector - InputManager 에서 Gravity와 Sensitivity 수치를 높이면 반응속도가 엄청 빨라짐.
Unity3D 관련사이트 소개
- http://foxmann.blog.me - 유니티3D 강좌
- http://soundbible.com - 데모사운드 다운로드 사이트
- http://afterglow.co.kr - 저녁노을 유니티 강좌 블로그
- http://archive3d.net - 3D모델링 무료 사이트
출처: http://jinblog.kr/123#comment11417784 [Jin]
Unity3D 기본 설명
- prefab을 클래스 제일 첫번째 선언 : 권장함.
- 모든 객체를 만들때 Z축을 바라보게 만들어야 함.
- prefab break(깨기) : GameObject - Break Prefab Instance
- 새로추가한 카메라에 대해서는 Inspectord에서 Audio Listener를 삭제.
- 카메라 두개 합치기
- Main Camera - Inspector - Camera - Clear Flags : Depth only
- Depth : 10
- 카메라끼리 위, 아래로 겹쳐서 놓았을때, 사용가능.
Unity3D Method 설명
- public AudioClip : Sound파일은 AudioClip으로 연결시킴.
- Quaternion.identity : Quaternion - x,y,z,w 값을 가지고 있음. - 4원수라고 불림. (복수수, 허수 체계)
- eulerAngles는 y축, x축, z축 순서로 계산함. (계산하는 방식에 따라 결과값이 다름.)
- 또한 정확히 90도값이 나왔을때, 결과를 출력할 수 없음. (Jimbal Lock이라고함)
- 그러나 Quaternion으로 eulerAngles의 문제점을 해결할 수 있음.
- Ex) (3+4i)(3-4i) = 3^2+4i^2 / (a+b)(a-b) = a^2+b^2 샬라샬라.
- Inspector에 있는 Rotation x, y, z 가 우리가 아는 각도. 60분법각도 (eulerAngles).
- 즉, Quaternion.identity : x축0도, y축0도, z축0도를 뜻함.
- 추가로. obj.transform.rotation은 Quaternion / obj.transform.eulerAngles는 60분법각도.
- Quaternion은 eulerAngles의 상위객체.
- 각도를 직접 입력할때는 eulerAngles를 이용하여 각도 입력해야함.
- GameObject.Find(String ObjectName) : Hierarchy에 있는 GameObject에 있는 것을 찾음.
- Hierarchy에서 첫번째것만 찾음.
- 여기서 못찾아도 NULL값이 들어와도 오류안남. 그냥 null값만 넘어옴.
- this.transform.Find("String ObjectName) : 자기자신의 자식(child)중에서 Object를 찾음.
- 손주는 못찾음. 자식을 찾고, 또 자식을 찾고 해야함.
- Ex) transform.Find("Gun/spPoint"); 이런식으로 찾으면 됨.
- transform.LookAt(Vector3) : 원하는 Vector3(transform or position)를 Target으로 삼아서 쳐다봄.
- Vector3.Distance(position1, position2) : 두 위치의 거리를 구하는 함수.
- Ex) if문을 이용하여 dist <= 30 이런식일때만 LookAt을 사용하여 영역을 지정하여 쳐다보게 할 수 있음.
- Debug.DrawRay(position1, position2,Color color) : position1위치에서 position2위치까지 디버깅상태에서만 선을 그린다.
- Physics.Raycast(position1, position2, out, num) : 이전에 [ RaycastHit hit ] 선언한 후에 함수호출.
- position1에서 position2방향으로 num(m단위)으로 검출되면 out으로 정보를 출력.
- 가리키는 방향 탐지후 그 정보를 out으로 데이터 출력. out은 RaycastHit 형태 변수를 써주면 됨.
- num은 거리.
- yield return new WaitForSeconds(2); : 루프중에 2초동안 딜레이시킴.
- 이때 메소드의 리턴타입은 IEnumerator로 변경해야 한다.
- 이렇게 만든 메소드는 CoRoutine 이라고 부름.
- 호출할때에도 변경해줘야한다. ShootBullet이라는 함수이름을 가지고 있을경우 ShootBullet(); 이라고 사용하던 것을 StartCoroutine("ShootBullet"); 이라고 호출하는 것으로 변경해야한다.
- coll.transform.root.gameObject : 해당 오브젝트의 부모오브젝트 탐색시 사용. (Collider의 경우임)
- getButton / getButtonDown : 이 둘의 차이는 Down이 붙으면 단발성(일회성) 임.
- 연속적인 값이 필요하거나 연속적으로 행동을 취할때는 getButton을 이용(Down을 제외한 메소드)
- Vector3.zero : 3차워 데이터 Vector3를 (0,0,0)으로 초기화
- Screen.orientation = ScreenOrientation.Portrait : 모바일 기기 설정. 세로모드로 고정.
- Screen.sleepTimeout = SleepTimeout.NeverSleep : 모바일 기기 설정. 게임중에는 절대 잠들지 않음.
- Input.acceleration.x : Unity3D 4.2부터는 방향 상관없이 왼쪽을 들면 -, 오른쪽을 들면 + (범위는 -1.0 ~ 1.0) - 모바일기기 중력가속도센서
- 모바일기기 멀티터치소스예제
foreach( Touch tmp in Input.touches) { if(tmp.phase == TouchPhase.Began) { touchStart = tmp.position; } if(tmp.phase == TouchPhase.Moved) { Vector3 touchEnd = tmp.position; if(touchEnd.y - touchStart.y > 100) { StartCoroutine("JumpHuman"); } if(canTurn) { if(touchEnd.x - touchStart.x > 100) { RotateHuman("RIGHT"); } if(touchEnd.x - touchStart.x < -100) { RotateHuman("LEFT"); } } } }
- Application.platform == RuntimePlatform.Android : 현 기기 플랫폼이 Android일 경우 true 반환
- Application.platform == RuntimePlatform.IphonePlayer : 현 기기 플랫폼이 Iphone일 경우 true 반환
- 그 이외에는 else 로 구분하여 처리하여 PC로 구분하면 됨.
- animation.Play(Animation) : 해당 오브젝트의 애니메이션을 실행할 수 있다.
- Animation 인자는 Inspector - Animation - Animations 안에 있는 키값을 넣어주면 됨.
- Random.Range(0, 3) : 0~3까지 난수생성
- Quaternion / eulerAngles 변경 : 밑에 예제
Quaternion ang = Quaternion.identity; ang.eulerAngles = new Vector3(0, 95, 0);
- OnTrigger : Is Trigger 체크되어있을때.
- OnTriggerEnter(Collider coll) : 충돌이 일어날때.
- OnTriggerStay(Collider coll) : 충돌중.
- OnTriggerExit(Collider coll) : 충돌이 끝날때.
- OnCollision
- OnCollisionEnter(Collision coll) : 충돌이 일어날때.
- OnCollisionStay(Collision coll) : 충돌중.
- OnCollisionExit(Collision coll) : 충돌이 끝날때.
- (GameObject).SendMessage("Function", parameter, SendMessageOptions.DontRequireReceiver); : 외부 게임오브젝트클래스의 함수를 호출할때 사용.
- "Function" : 메소드 이름.
- parameter : 인자값 전달.
- SendMessageOption.DontRequireReceiver : 반환값없음. Thread로 동작?
- OnGUI() : 화면에 Text, Button 등 GUI를 출력(루프)
- GUI.Label(Rect(left, top, width, height), "text") : 원하는 위치에 텍스트 출력
- 좌측상단이 x, y 좌표 0을 의미
- if(GUI.Button(Rect(left, top, width, height), "text") { 내용 } : 원하는 위치에 버튼 출력후 true일 경우 내용 실행
- Application.LoadLevel("scene") : scene 이름의 씬 로드.
- Application.Quit() : 앱 종료. 모바일이랑 PC만 지원. 웹은 안됨.
- string str = "<color=red><size=20><b><i>helloworld</i></b></size></color>"
- string에 HTML 태그 지원. Label에 적용가능.
- ImportPackage - Particles : Unity3D에서 기본적인 이펙트효과를 담고 있음.
- Dust : 먼지 효과.
- Fire(Fire1, Flame) : 불 효과.
- Legacy Particles : 터지는 효과.
- Particles Property
- Ellipsoid Particle Emitter
- Min Size, Max Size : 입자의 크기
- Min Energy, Max Energy : 입자의 수명 (초단위)
- Min Emission, Max Emission : 입자의 개수
- Velocity : 입자의 움직이는 방향 (World, Local, Rnd 기준이 있음)
- Emitter Velocity Scale : 뱅글뱅글할꺼냐라는 뜻.
- Simulate in Worldspace : 퍼질것인지
- One Shot : 단발성 효과여부
- Ellipsoid : 원안에서 출현을 어디서 할것인지 공간을 x,y,z로 정함.
- Particle Animator
- Size Grow : 점점 커지면서 날라갈 것인가를 설정(숫자가 커질수록 입자가 커짐)
- Rnd Force : 각 방향에 랜덤으로 가해지는 힘을 설정.
- Force : 각 방향에 가해지는 힘을 설정.
- Damping : 이미설정되어있는 값들을 한번에 다시 조정할때 사용
- Autodestruct : 체크되어 있으면 한번 번쩍거리고 사라짐.
- Particle Renderer
- 일단 넘어감.
- ImportPackage - Character Controllers : Unity3D에서 기본적으로 제공하는 주인공캐릭터
- 3rd Person Controller : 3인칭
- Animation을 제외한 Component들을 삭제. (기본적으로 지원해주는 것들인데 Collider를 새로 정해주는 것이 효율적임)
- First Person Controller : 1인칭
- ImportPackage - Water (Pro Only) : 물효과. Pro 버젼에서만 가능.
- Daylight Water : 움직이는 물효과 (찰랑찰랑~)
Unity3D 버튼설명
Unity3D Component 설명
- 모든객체는 Collider가 있어야 충돌 및 객체끼리 겹치지 않음.
- Rigidbody - Constraints - Freeze Position, Freeze Rotation 해당하는 좌표는 rigidbody의 영향을 받지 않도록 하는 기능.
- Inspector - Animation - Animations : 각 오브젝트의 애니메이션들이 집합으로 되어 있음.
Unity3D 관련사이트 소개
출처: http://jinblog.kr/124?category=654425 [Jin]
Unity3D 기본 설명
- 2D게임을 만들때 Z축이 겹치기 때문에 살짝 간격을 줘서 처리한다.
- Ex) 캐릭터가 Z : 0일때, 아이템은 Z : 0.5 정도.
- 일반적인 게임을 만들때 점프기능을 구현할때 점프와 떨어지는 속도를 따로 정의함.
- 점프속도 : n
- 떨어지는 속도 : n*2
- 게임엔진의 중력을 사용하게되면 이중점프나, 점프중 기능을 구현할때 문제점이 생김.
- 소스에서 한글로 입력 후 오류 났을때 해결방법
- File - Save As - Character Coding - Korean (ISO) 로 선택하여 덮어쓰기.
- File - Save As - Character Coding - Korean (ISO) 로 선택하여 덮어쓰기.
- GUI설정적용은 OnGUI() 에서 적용해야 실제 적용됨.
- 이미지를 맵핑(Texture들)할때 2의 배수일때 맵핑이 빠르게됨. (하드웨어 가속을 사용.)
- Unity3D는 모든 이미지들을 2의 배수로 자동으로 적용됨.
- 이러한 2의 배수를 사용하는 규칙은 NVidia의 규칙이 사용된 것.
- 이러한 규칙을 사용하기 싫을 경우는 Image Inspector에서 Texture Type에서 GUI로 변경. 그리고 Format을 Truecolor로 변경.
- Unity3D에서는 색상값을 0~255가 아닌 0~1로 사용함.
- 각 클래스글자 위에서 [ Command+' ] or [ WindowsKey + ' ] 레퍼런스사이트로 이동.
Unity3D Build & Run 설명
- Android Setting
- Unity Preferences - External Tools - Android SDK Location : 안드로이드 SDK 위치 지정
- Web
- File - Build Setting - Web Players - Player Setting
- 위 경로에서 내용 지정.
- 최종적으로 Build버튼으로 생성.
- Web으로 빌드하면 jQuery와 HTML로 짜여져 있음.
- HTML파일이 unity3d 파일을 로드하여 게임을 진행.
- 배포는 웹서버에 웹파일 모두를 올린후 html파일을 링크.
- File - Build Setting - Web Players - Player Setting
- PC
- PC도 Web과 거의 비슷하고 각 플랫폼(Win, Mac, Linux)으로 Export 됨.
- Android
- File - Build Setting - Android
- Image들 Inspector - Format - Truecolor로 변경. (안드로이드는 기본적으로 이미지들을 압축해버림.)
- Player Setting
- Product Name : 게임이름설정
- Resolution and Presentation : Default Orientation 에서 모드를 설정해도 소스가 우선
- Icon - 아이콘 설정
- Splash Image(Pro Only) : 첫로딩화면. 프로버젼만가능. 프리(free)는 불가능
- Other Setting
- Identification - Bundle Identifier : com.xxx.xxxx 이름 지정해줘야함.
- 여기서 버젼, Android API Level설정가능(Android 플랫폼 버젼)
- API Level은 'Android 2.3.3. Gingerbread API level 10' 를 권장
- Identification - Bundle Identifier : com.xxx.xxxx 이름 지정해줘야함.
- Publishing Settings : 안드로이드 개발자 등록 키스토어를 정하여 자동으로 올라갈 수 있음.
- 최종빌드는 Build버튼을 선택. - 파일명을 지정하라고 뜨면 이름정하면 이름.apk 로 Export됨.
- Build And Run은 모바일기기로 바로 들어감. (안드로이드 기기테스트와 같음.)
- File - Build Setting - Android
- iOS
- File - Build Setting - iOS
- 아이폰도 위와 거의 비슷함.
- Build는 Xcode 프로젝트 파일로 Export됨.
- Build And Run은 Xcode로 출력 후 바로 Run.
- iOS의 경우는 디바이스 테스트시 Apple 개발자계정이 있어야 하고, 인증서파일이 따로 필요함.
- File - Build Setting - iOS
Unity3D Method 설명
- transform.renderer.material.mainTextureOffset = new Vector2(x, y)
- x, y축으로 오브젝트에 있는 이미지가 움직임.
- x, y에는 speed * Time.time 으로 주면 됨.
- Screen.orientation = ScreenOrientation.LandscapeRight : 모바일 기기 설정. 가로모드로 고정.
- Camera.main.WorldToScreenPoint(transform.position)
- Camera의 시야로 봤을때 transform의 위치를 절대좌표로 잡는다.
- Resources.Load(string resourceName) : Resource 폴더에 있는 resourceName자료를 불러옴.
- 폴더가 'Resources'이어야만 가능한 메소드.
- Resources폴더는 컴파일할때 모든자료가 같이 올라감. (메모리 사용률 증가)
- Mathf.Repeat(++num1, num2)
- num1을 하나 증가하고 num2-1 까지 돌다가 끝나면 num1을 0으로 초기화하는 함수.
- transform.guiText.material.color : guiText의 글자의 색상을 Vector4 형태로 가지고 있음.
- Vector4(Red, Green, Blue, Alpha) / (r, g, b, a)
- Camera.main.WorldToViewportPoint(transform.position)
- 현 transform.position 의 위치를 World위치로 변경.
- GameObject.FindGameObjectsWithTag("TAG") : TAG에 해당하는 모든 오브젝트를 배열로 가져옴.
- 뒤에 .Length로 배열 Count도 가져올 수 있음.
- object.tag.Contains("TAG")
- TAG라는 태그이름이 태그안에 들어있다면 오브젝트라면 true를 반환.
- Screen.width
- 현재 실행중인 기기에서 게임화면 width를 int값으로 가져옴.
- Screen.height
- 현재 실행중인 기기에서 게임화면 height를 int값으로 가져옴.
- Input.GetKeyDown(KeyCode.Escape) : 모바일에서는 Back버튼.
- GUI.skin : OnGUI()에서 skin값을 가져오거나 적용할 수 있음.
- yield return new WaitForFixedUpdate() : 업데이트에 적용할때까지 대기.
- for문 안에 사용시 for문 한동작 한동작이 Update문에 적용되어 사용자에게 보여짐.
- Window - Animation (Command or Windows Key + 6) : 애니메이션 기능 추가
- Timeline : 0:00 / 0:30 / 1:00 / 1:30
- 앞에 정수가 실제 초단위.
- 뒤는 프레임을 가리킴 ( Unity3D는 1초에 60프레임을 재생)
- Animation 작업창에는 각 오브젝트를 작업할 수 있게 Transform이 있음.
- : Add KeyFrame
- : Add Event - 할줄모르면 누르면안됨. 에러남
- KeyFrame을 하기전에 Transform 속성중에서 이표시를 한번 누른 후에 [Add Key Frame]을 눌러야 함.
- Transform 속성에서 숫자입력하는 곳이 변화하고 싶은 수치를 중간 중간 입력하여 애니메이션을 적용.
- Timeline에 있는 붉은 선을 움직이면 애니메이션 효과를 미리 확인가능.
- Assets 목록에서 새로만든 Animation을 선택하면 Inspector창에 Wrap Mode에서 한번할 것인지, 반복할 것인지 선택가능.
Unity3D GameObject 설명
- GUIText : 소스말고 Unity상에서 Text표기시 사용. (0,0) 좌표는 좌측 상단
- Anchor, Aligment로 정렬가능.
- Cube에 이미지를 맵핑하면 사방으로 이미지가 표시됨.
Unity3D Assets 설명
- GameObject - Quad : 평면오브젝트. Unity3D 4.2부터 생김.
- Font : Font Size는 여기서 Default로 결정가능.
- GUISkin : GUI관련된 Controller
- GUI로 직접 그리면 힘듬. 보통 Assets Store에서 N GUI라는 유료 Assets을 사용
- 그나마 Unity3D에서 지원하는 GUISkin이 쓸만함.
- Button
- Normal : 보통
- Hover : 손이 올라갔을때
- Active : 클릭했을때.
- Focused : 선택되었을때
Unity3D Component 설명
- Image적용후 배경을 투명으로 하고 싶을때
- Inspector - Image적용한쪽 - Shader - Transparent/Diffuse 선택
- MainCamera 원근을 업앨때
- Inspector - Camera - Projection - Orthographic 선택.
- Perspective : 원근이 있음.
- Orthographic : 원근이 없음.
Unity3D 관련사이트 소개
출처: http://jinblog.kr/125?category=654425 [Jin]
Unity3D 기본 설명
Unity3D Method 설명
- Input.mousePosition : mouse의 position을 Vector3로 가져옴
- GUI.DrawTexture(new Rect(x,y,width,height), Resource.Load("resource name") as Texture2D)
- GUI에서 y좌표는 위에가 0. (잘생각해서 코딩해야함)
- DrawTexture. 화면에 그림을 그림. Resource폴더에 있는 resource name을.
- Screen.showCursor = false : 스크린에서 마우스커서를 없앰.
- true로 하면 스크린커서가 생김.
- 개발모드에서는 클릭한번해야 적용. (컴파일하면 괜찮음 : ))
- animation.Play("ani_name") : ani_name으로 지정된 애니메이션 실행.
- animation.Stop(); : 애니메이션 정지.
- RaycastHit의 hit.point : 맞은쪽.
- Input.GetMouseButtonDown(num) : 0 은 왼쪽클릭, 1은 오른쪽클릭
- Camera.ScreenToWorldPoint(new Vector3(-30, 0, 0)) : 화면밖을 의미 Vector3로 리턴
- hit.transform.SendMessage("OpenCard", SendMessageOptions.DontRequireReceiver);
- 해당하는 오브젝트만 단독으로 메소드를 실행. 프리팹으로 여러개 만든후 한 오브젝트만 처리할때.
Unity3D GameObject 설명
Unity3D Assets 설명
- 외부 모델링파일 Inspector 보면 Generate Collider를 체크하면 자동으로 Collider 가 생성과 동시에 만들어짐
Unity3D Component 설명
- Metarial Inspector
- Shader : 그래픽효과를 줄수있음.
- Bumped Diffuse :
- Mobile : 모바일기기에 최적화되어 있음.
- Reflective : 오브젝트가 빛에 대해서 반사됨.
- Legacy Shaders : 고전적인 스타일.
Unity3D Animation 설명
- 애니메이션 작동시 관성 없앨때
- 애니메이션 블록 선택후 오른쪽 클릭 : Both Tangents - Linear
- AddEvent : 애니메이션 중간에 Event(예 : 소리같은거) 를 추가할때 사용.
- AddEvent를 누른후 아무것도 하지 않으면 에러남.
- Event는 Script로 정의 후 사용.
Unity3D 관련사이트 소개
출처: http://jinblog.kr/126?category=654425 [Jin]
Unity3D 기본 설명
- Scene이 2개 이상일경우는 File - Build Settings에서 Scenes In Build에 Scene들을 드래그해서 등록해야함.
- 처음에 실행해야할 Scene을 맨위로 올려야함.
- 지형설정
- Window - Navigation - Bake 에서 설정후 Bake를 누르면됨. 이때 지형으로 선정할 오브젝트를 모두 선택한 후에 적용.
- 외부오브젝트 사이즈 조정 및 축 돌리기 (Z축이 앞을 바라봐야함.
- Project 오브젝트 선택후 Inspector에서 Scale Factor로 숫자를 줄여 스케일조정
- 빈GameObject를 만들어서 축을 돌려서 외부오브젝트를 빈GameObject의 자식오브젝트로 넣음
- 외부오브젝트 Inspector에서 Shader를 Specular로 바꾸면 멋있게 빛이남.
Unity3D Method 설명
- yield return new WaitForFixedUpdate() : 1프레임 양보.
- yield return 0; 이방법도 있지만 위방법을 추천.
- IEnumerator 에서 return만 하고 싶을때는 yield break; 로 해야함. (안그러면 오류)
- GameObject.FindWithTag("tag_name") : 해당하는 태그의 GameObject를 반환.
- GameObject.FindGameObjectWithTag("tag_name") 으로도 사용가능.
- GetComponent<NavMeshAgent>() : 해당하는 컴포넌트를 찾아서 가져옴.
- Component - Navigation - Nav Mesh Agent : 이쪽관련자료 검색후 참조
- 적이 아군을 지형을 피해서 쫓아옴.
- Component - Navigation - Nav Mesh Agent : 이쪽관련자료 검색후 참조
- foreach(Touch tmp in Input.touches) : 모든 터치들을 Touch 객체로 가져와서 검사할 수 있음.
- btnLeft.HitTest(tmp.position) : 현재 터치한 위치가 btnLeft위인지 확인. (누르고 있는거 가능)
- transform.localScale : transform의 크기를 가져옴. Vector3의 형태를 가지고 있고, 대입도 가능.
Unity3D GameObject 설명
Unity3D Assets 설명
- material - Inspector - Shader Particles/Additive
Unity3D Component 설명
- (Custom Particle 만들기) 빈 GameObject 생성후
- Component - Effect - Legacy - Ellipsoid Particle Emitter
- Component - Effect - Legacy - Particle Collider
- Component - Effect - Legacy - Particle Renderer
- 선택하면 GameObject가 껌뻑임. - 준비된 Particles material을 끌어다가 놓으면 효과가 생김.
- Inspector에서 속성들을 수정하면 이쁜 파티클 완성 : )
- 최종적으로 prefab으로 만들면 Particle 완성!
- Component - Effect - Legacy - Ellipsoid Particle Emitter
- 지형설정
Unity3D Animation 설명
Unity3D 관련사이트 소개
출처: http://jinblog.kr/127?category=654425 [Jin]
'Unity' 카테고리의 다른 글
[Unity] OnEnable(), OnDisable() (0) | 2018.05.08 |
---|---|
[Unity] Awake(), Start() (0) | 2018.05.08 |
[Unity] 유니티 최적화 / 반복문의 속도 차이 (0) | 2018.05.01 |
[Unity] Tip / 스크립트가 적용된 오브젝트 쉽게 찾기 (2) | 2018.04.30 |
[Unity] 유니티에 기어 VR 개발환경 설정하기 (0) | 2018.04.24 |