목록유니티/유니티 기능 (12)
A-Dyu의 개발 일기장
유니티에서 네비메시를 사용할 때 바로 멈추지 않거나 Angular Speed를 아무리 높게 설정해도 회전 속도가 원하는 만큼 나오지 않을 떄가 있다.이럴 경우에선 velocity를 zero로 만들거나, 회전값을 바꿔 해결할 수 있다. 1.에이전트를 즉시 멈추게 하기먼저 isStopped를 true로 바꾼다, 하지만 이런 경우에선 바디만 몀추고 실제 계산은 계속 이루어지기 때문에velocity를 zero로 만들고 updatePosition을 false로 바꿔 해결할 수 있다.(물론 다시 움직일려면 또 바꿔야 한다)//움직임을 즉시 멈출 때public MovePause(){ navAgunt.isStopped = true; navAgunt.updatePosition = false; //계산 정지 ..
유니티에서 커맨드라인이나 bat파일로 실행할 때 커맨드 라인에서 인자를 받고 싶을 때가 있다.이럴 때 사용할 수 있는 방법이 있다. Environment.GetCommandLineArgs이 함수는 System네임스페이스에 포함된 Environment클래스의 기능이다.커맨드 라인에서 받은 여러 가지 인자를 string배열로 반환하며, 0번째 요소는 실행 파일을 실행할 때 사용한 경로이므로 1번째부터 요소를 읽는 걸 추천한다.using System;//Environment를 사용하기 위한 namespacevoid Start(){ string[] args = Environment.GetCommandLineArgs(); foreach (string arg in args) { Debu..
유니티에서 LookRotation을 사용하다가 Look rotation viewing vector is zero라는 메세지가 콘솔창에 출력됐다.이 함수는 LookRotation의 인수가 Vector3(0,0,0)이면 출력되는 콘솔로, 실행시키기 전 인수를 체크하는 걸로 해결할 수 있다.void Update(){ //pos가 Vector3.zero면 Look rotation viewing vector is zero메세지 출력 Quaternion.LookRotation(pos); //pos가 Vector3.zero인지 체크한 후 실행 if(pos != Vector3.zero){ Quaternion.LookRotation(pos); }}
레지스트리 키고 에디터에서 실행한거면 HKEY_CURRENT_USER\Software\Unity\UnityEditor\\ 빌드해서 실행한거면 HKEY_CURRENT_USER\Software\\\
유니티에서 양쪽면을 렌더하거나 안쪽 면만 렌더하고 싶은 경우가 있다.유니티 컬링 방향을 결정해 렌더할 수 있다.머터리얼의 인스펙터 창으로 간다.그럼 Render Face란 속성이 보이는데자신이 원하는 속성으로 바꾸면 된다.Both모든 면을 드로우합니다Back뒤쪽 면을 렌더링하지 않습니다(디폴트)Front앞쪽 면을 렌더링하지 않습니다.
InverseTransformPoint 메서드는 월드 좌표를 해당 객체의 로컬 좌표로 변환해줍니다.예를 들어, 월드 좌표 Vector3(1,1,1)이 객체 A의 로컬 좌표 Vector3(5,5,5)에 해당한다면, 해당 메서드를 실행하면 Vector3(5,5,5)를 반환합니다.GameObject A = GameObject.Find("A");A.InverseTransformPoint(new Vector3(1,1,1));//(5,5,5)

RequireComponent 어트리뷰트는 컴포넌트에 대한 종속성을 추가시킬떄 사용됩니다.예를 들어, 제가 만드는 컴포넌트는 Rigidbody를 사용합니다.하지만 이 컴포넌트를 추가한 게임오브젝트에 Rigidbody가 없으면 당연히 에러가 나겠죠.using UnityEngine;public class Test : MonoBehaviour{ Rigidbody rigid; private void Awake() { rigid = GetComponent(); }}그럴 때 "이 컴포넌트는 다른 컴포넌트가 꼭 필요하다!"라고 알려주는게 RequireComponent 어트리뷰트입니다.RequireComponent 어트리뷰트를 클래스에 추가시키겠습니다using UnityEditor;u..

CreateAssetMenu 어트리뷰트는 새로운 Scriptable 파일을 만들 때 메뉴에서 생성시킬 수 있는 옵션을 추가해줍니다. 사용법은 Scriptable 클래스에 CreateAssetMenu 어트리뷰트를 추가해줍니다.using UnityEngine;[CreateAssetMenu(fileName = "EntityData", menuName = "EntityScriptable/EntityData", order = int.MaxValue)]public class Test : ScriptableObject{ [SerializeField] int MaxHP; [SerializeField] float Damage;}각각의 인자는 다음의 역할을 합니다.fileName파일을 생성했을 때 파일 이름의 ..