본문 바로가기

unity

(19)
내일배움캠프 Unity 트랙 후기 관련학과를 졸업하고나서 게임개발에 관심이 많았는데 마침 내일배움캠프의 Unity트랙이라는 곳을 알게되서 신청을 하게 되었습니다. 웹이나 앱에 관련된 부트캠프는 많았는데 게임개발에 관련된 부트캠프는 내일배움캠프말고는 쉽게 찾을 수 없었습니다. 또, Unity라는 게임엔진에 맞춰서 커리큘럼이 갖춰졌다는 점도 내일배움캠프를 선택하게된 이유입니다. 여러 프로젝트를 하면서 Unity의 기본기와 협업에 대해서 많이 배울 수 있었고, 특히 매일 TIL을 적는것과 알고리즘, CS에 대해서 공부하는 것이 도움이 많이 됬습니다. 게임개발에 관심이 있으신 분들에게 강추합니다.
23.11.14 ScriptableObject : 플레이어 위치 찾기 몬스터가 플레이어를 추적하는 기능을 만들 때 플레이어의 위치를 찾기위해서 Find 메소드를 사용하거나 GameManager같은 매니저가 플레이어를 미리 참조하고 있고 그걸 받아올 수 있지만, ScriptableObject를 사용하여 위치를 찾을수 있다. PlayerPosition.cs 플레이어의 위치를 필드로 가지는 ScriptableObject이다. using UnityEngine; [CreateAssetMenu(fmenuName = "PlayerPosition")] public class PlayerPosition : ScriptableObject { public Vector3 position { get; set; } } Player.cs 플레이어..
23.11.01 비동기적으로 씬 로딩하기 유니티에는 SceneManager라는 클래스가 존재하는데, 게임내 다양한 장면(Scene)을 관리하고 전환하는데 사용되는 유용한 도구입니다. 씬 이동 LoadScene을 사용하면 다른 씬으로 전환할 수 있습니다. 하지만 씬을 전환하기 위해서 Build에서 전환할 씬을 등록해야 합니다. using UnityEngine; using UnityEngine.SceneManagement; // 다른 장면으로 전환하기 SceneManager.LoadScene("씬 이름"); SceneManager.LoadScene(Scene Index); 비동기 씬 이동 using System.Collections; using System.Collections.Generic; using UnityEngin..
23.10.26 Unity : 3D to 2D Image 렌더 텍스쳐(Render Texture) 화면에 렌더링되는 이미지 데이터를 저장하는 데 사용되는 특수한 종류의 텍스처입니다. 주로 카메라의 뷰 포트에서 렌더링된 2D 또는 3D 씬을 캡처하거나 다른 텍스처에 렌더링하는데 사용됩니다. 사용 방법 프로젝트에 렌더 텍스처를 생성하고 해당 렌더 텍스처를 카메라의 대상으로 설정합니다. 렌더 텍스처를 렌더링하는 카메라에는 해당 3D객체가 화면에 나타나도록 배치합니다. 스크립트를 이용하여 렌더 텍스처를 이미지로 저장합니다. using UnityEngine; public class RenderTextureToImage : MonoBehaviour { public RenderTexture renderTexture; public s..
23.10.25 Unity : 해상도 가져오기 유니티의 해상도를 가져오는 코드는 간단하다. using UnityEngine; public class ResolutionManager : MonoBehaviour { void Start() { // 현재 화면 해상도를 가져오기 int screenWidth = Screen.width; int screenHeight = Screen.height; // 결과 출력 Debug.Log("화면 해상도: " + screenWidth + "x" + screenHeight); } } 이 외에도 현재 사용하고 있는 모니터의 해상도를 가져오는 코드는 아래와 같다. using UnityEngine; public class ResolutionManager : MonoBehaviour { void ..
23.10.24 Unity : Drag & Drop Drag & Drop을 사용하기 위해서는 Unity에서 제공하는 인테페이스를 상속해야 한다. IBeginDragHandler IBeginDragHandler는 드래그를 시작했을 때 발생하는 이벤트를 정의 하는 인터페이스로 OnBeginDrag(PointerEventData eventData)를 재정의하여 사용하면 된다. IDragHandler IDragHandler는 드래그를 중 발생하는 이벤트를 정의 하는 인터페이스로 OnDrag(PointerEventData eventData)를 재정의 하여 사용하면 된다. IEndDragHandler IEndDragHandler는 드래그가 종료할 때 발생하는 이벤트를 정의하는 인터페이스로 OnEndDrag(PointerEventD..
23.10.12 Property란 프로퍼티란 속성이라는 의미를 가지고, 클래스안에서 변수를 선언 후 다른 클래스에서 사용을 하려면 Public을 붙여 줘야하는데 정보 은닉을 위해 private로 선언후 get,set 메소드를 지원하는 유니티 메소드를 사용해서 구현할 수 있다! Property의 특징 1. 프로퍼티를 사용하면 클래스가 구현 또는 코드를 숨기는 동시에 값을 가져오고 설정하는 방법을 공개적으로 노출할 수 있습니다. 2. get 속성 접근자는 속성 값을 반환하고, set 접근자는 새 값을 할당하는데 사용합니다. 3. set 접근자의 value 키워드는 set 접근자가 할당하는 값을 정의하는데 사용합니다. 4. set 접근자만을 구현하면 쓰기 전용, get 접근자만을 구현하면 읽기 전용입니다. 기본형식 class..
23.10.05 [에러메시지] All compiler errors have to be fixed before you can enter play mode 유니티 플레이를 눌렀는데 All compiler errors have to be fixed before you can enter play mode 이 메시지가 뜬다면 스크립트에 에러가 났다는 메시지다. 해결방법은 유니티 메뉴에서 Window - Console 을 클릭하면 에러메시지 로그가 뜰 것이다. 더블클릭으로 스크립트안에 들어가서 버그수정해주면 끝. 선발대 세션 (최적화) 모바일 게임 성능 최적화 https://blog.unity.com/kr/games/optimize-your-mobile-game-performance-expert-tips-on-graphics-an..
23.10.02 Physics.Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo) using UnityEngine; public class ExampleClass : MonoBehaviour { private RaycastHit hit; void Update () { if (Physics.Raycast(transform.position, transform.forward, out hit)) { Debug.Log("hit point : " + hit.point + ", distance : " + hit.distance + ", name : " + hit.collider.name); Debug.DrawRay(transform.position, transfor..
23.09.27 선발대 세션 자료구조와 DOTween, Ease Visualizer 그리고 Cinemachine에 관한 세션이였다. DOTween은 UI에 사용하면 정말 편할꺼 같았고, Cinemachine은 카메라를 설정하는데 도움이 많이 될 것 같아서 더 깊게 공부해봐야겠다. 제네릭 컬렉션 HashSet vs HashTable vs Dictionary Ease Visualizer DOTween 팀 프로젝트 : 3D Survivor 오늘은 건축물을 건설할 때 건축물의 높이 만큼 건설 위치를 보정해 주는 것과 벽을 설치할 때 바닥의 가장자리 부분에 위치가 자동으로 잡아지도록 하는 걸 했다. 건축물의 높이는 public으로 선언해서 인스펙터를 통해서 조금씩 높여보면서 보정했고, 바닥의 가장자리부분은 미리 좌표를 입력해 놔..