유니티

    [Unity] RectTransform 내 피벗 Top과 Bottom 설정

    rectTransform = RectTransform 변수 > GetComponent() 또는 GetComponent as RectTransform 가능 top = 상단 값 bottom = 하단값 rectTransform.offsetMin = new Vector2(rectTransform.offsetMin.x, bottom); rectTransform.offsetMax = new Vector2(rectTransform.offsetMax.x, top);

    [Unity] GUI, GUIStyle 및 GUILayout

    일반적으로 Layout이 붙은것과 그렇지 않은 것이 있는데, 차이점은 Layout은 요소의 너비와 높이, 위치를 자동적으로 맞춰준다는 것이다. public override void OnInspectorGUI () { test = target as TestComponent; test.key = EditorGUILayout.TextField ("Key", test.key); test.value = EditorGUILayout.IntField ("Value", test.value); } ayout 에서 사용되는 필드들은 위 사진 처럼 너비와 위치를 자동으로 넣어준다. 기본적으로 너비는 전체 너비에 맞춰지며 수직적으로 정렬된다. 높이는 기본적으로 에디터상에서 사용되는 필드의 기본 단일 높이 (EditorGUIU..

    [Unity] JSON 파일 저장 및 읽기

    Global이라는 static 클래스를 사용했기 때문에 아래 함수들은 public static으로 되어있음. 이는 클래스 멤버 변수로 non-static으로 해도 무방. 저장 public static void CreateJsonFile(string createPath, string fileName, string jsonData) { FileStream fileStream = new FileStream(string.Format("{0}/{1}.json", createPath, fileName), FileMode.Create); byte[] data = Encoding.UTF8.GetBytes(jsonData); fileStream.Write(data, 0, data.Length); fileStream.Cl..

    [Unity] 에디터에서만 사용할 수 있는 커스텀 코루틴

    모든 코루틴은 이로부터 접근을 해서 호출한다. 예) EditorCoroutines.EditorCoroutines.StartCoroutine(코루틴 명칭, this); EditorCoroutines.EditorCoroutines.StopCoroutine(코루틴 명칭, this); using EditorCoroutine = EditorCoroutines.EditorCoroutines; 맨 위에 추가시 아래와 같이 생략 가능 EditorCoroutine.StartCoroutine(코루틴 명칭, this); EditorCoroutine.StopCoroutine(코루틴 명칭, this); using UnityEngine; using System.Collections; using UnityEditor; using ..

    [Unity] 화면 위치 > 월드 좌표 치환 RectTransformUtility

    public static bool ScreenPointToLocalPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector2 localPoint); ScreenPoint(스크린좌표)를 RectTransform의 LocalPoint(캔버스좌표)로 변환합니다. Camera의 매개 변수는 ScreenPoint(스크린 좌표)와 연관된 카메라이어야 한다. 캔버스에서 RectTransform이 Screen Space-Overlay 모드로 설정된 경우 cam 매개 변수는 null 이어야 한다. (그래서 EnemyHpBar 구현할 때 없어도 됐던 것이었다.) rect screenPoint를 출력할 Canvas의 RectTransfo..

    [Unity] UI 카메라 설정하기 (screen space - camera)

    메인 카메라(main camera)의 culling mask에서 UI를 체크해제하고 depth 속성의 값을 0으로 설정하였다. 씬에 새로운 카메라를 추가한다. 카메라의 clear flags에서 depth only를 선택하고 culling mask에서 UI 레이어를 제외하고 체크해제한다. 캔버스와 하위 ui 요소의 레이어를 설정한다(UI) render mode에서 screen space- camera를 선택하고 render camera에 씬에 추가한 카메라를 참조시킨다. 메인 카메라에서 씬의 게임 오브젝트와 스카이박스를 표시하고 두번째 카메라의 UI는 항상 위에 표시된다. 출처 : 유니티에서 UI 카메라 설정하기(screen sapce - camera) (tistory.com)

    [Unity] Job 시스템 이해 1, IJob

    Unity의 Job 시스템을 이용하기 위해서는 using Unity.Jobs 를 사용해야 한다. 해당 게시글에서는 Unity.Jobs의 코드 확인 및 샘플 프로젝트를 만들어 봄으로써 Job 시스템을 이해하고자 한다. [ Unity.Jobs 의 계층 구조 ] ● Interface IJob ▶ 단일 작업을 하는 Job을 구현 할 때, struct에 상속하는 interface [JobProducerType( typeof( IJobExtensions.JobStruct ) )] public interface IJob { // // 요약: // Implement this method to perform work on a worker thread. void Execute(); } Execute() 함수에 Job에서 ..

    [Unity] onClick.AddListener에서 함수의 파라미터 전달 문제

    1) 예에서 아래와 같이 캔버스에 버튼을 구성하였다. 2) 아래 스크립트의 for구문에서 순차적으로 버튼을 클릭했을때 호출되는 함수를 추가하고 함수에 전달하는 인수로 iteration 변수를 설정하였다. 3) 게임을 시작하고 순차적으로 버튼을 클릭하면 의도한 iteration 변수를 출력하지않는것을 확인할수있다. 4) for 구문 내에서 임시적으로 정수형 변수를 선언하고 이 변수를 인수로 전달한다. 5) 게임을 시작하고 순차적으로 버튼을 클릭하면 정상적으로 출력한다. 출처 : 유니티 onClick.AddListener에서 함수의 파라미터 전달 문제 (tistory.com)

    [Unity] 강체(RigidBody) AddForce에 대한

    정의 Rigidbody에서 엄청 많이 쓰이는 AddForce를 알아보자 2가지 형태가 있다. public void AddForce(Vector3 force, ForceMode mode = ForceMode.Force); public void AddForce(float x, float y, float z, ForceMode mode = ForceMode.Force); 쉽게 말하면 AddForce(방향*힘 값, 힘의 종류) 라고 보면 된다. AddForce는 Rigidbody에게 힘을 전달해준다. (하지만 모든 Rigidbody가 아닌 Active 상태일 때만 전달된다.) **이러한 Force calculation은 FixedUpdate() 때 이루어진다. using UnityEngine; // 이것을 쓰지..

    [Unity] 키보드와 마우스 입력받기

    1. GetAxis, GetAxisRaw InputManager에 입력된 키를 누를 때, 값을 반환한다. 이때, 반환되는 값은 -1 ~ 1사이가 반환된다. nagative button을 누르면 음수가, positive button을 누르면 양수가 반환된다. 아무것도 누르지 않는다면 0이 반환된다. 물체를 이동시키고 싶을 때 사용한다. GetAxis() -1 ~ 1까지의 실수를 반환 GetAxisRaw() 버튼을 눌렀을 때 1, -1을 반환. 그렇지 않다면 0을 반환 2. GetButton InputManager에 입력된 키를 누를 때, 참, 거짓을 반환한다. 키를 눌렀을 때는 true를 반환, 그렇지 않다면 false를 반환한다. GetButton() 키를 누르는 시간만큼 true를 반환 GetButto..