목록Unity ToyProject/RPG (11)
개발일기
1. MasterManagers Managers를 MasterManager로 이름을 변경하고 지금까지 작성한 Manager들을 추가하고 Clear() 메서드도 생성했습니다. public class MasterManager : MonoBehaviour { #region Core static MasterManager instance; static MasterManager Instance { get { return instance; } } ResourceManager resource = new ResourceManager(); public static ResourceManager Resource { get { return Instance.resource; } } InputManager _input = new ..
1. Util GameObject가 T 형식을 컴포넌트로 가지고 있는지 확인하고, 없다면 추가해주고 반환해주는 Util Script 입니다. public class Util { public static T GetOrAddComponent(GameObject go) where T : UnityEngine.Component { T component = go.GetComponent(); if (component == null) component = go.AddComponent(); return component; } } 다음과 같이 호출하여 사용이 가능하지만, 해당 Game Object를 알고 있다면 Extension을 사용해서 호출 할 수 있습니다. Canvas canvas = Util.GetOrAddCom..

1. BaseScene Scene에 필요한 요소를 생성 시키고 초기 설정을 해주며 Scene 간 전환 역할을 해줄 Scene Object를 생성합니다. 각 Scene의 이름, 설정, BGM .. 등이 다르거나 다를 수 있지만, Scene Object의 역할을 동일하기에 부모 스크립트인 Base Scene을 다음과 같이 작성합니다. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public abstract class BaseScene : MonoBehaviour { public Scene SceneType { get; protected set; } = Sc..

1. 스프레드 시트 스프레드 시트에서 Json 파일을 만들 수 있습니다. 확장 프로그램 - Export Sheet Data - Open Slider를 누르면 Json화 시킬 수 있는 Slider가 열립니다. 원하는 기능을 선택 후, Export하고 DownLoad 받습니다. { "Items": [ { "ID": "100", "Name": "검", "Description": "날카로운 검이다." }, { "ID": "101", "Name": "방패", "Description": "듬직한 방패다." }, { "ID": "102", "Name": "표창", "Description": "날카로운 표창이다." } ] } 2. DataManager Item의 정보를 담은 ItemData를 생성했으니, 이를 불러오는..

1. Screen Space - Overlay UI가 화면에서 Scene 위에 그려집니다. 스크린의 크기가 조절되거나 해상도가 변하면 Canvas는 여기에 맞춰 자동으로 크기가 변경됩니다. 즉, 다음과 같은 UI 요소를 나타내는 RenderMode입니다. 2. World Space Canvas가 Scene 위에 있는 다른 오브젝트처럼 동작합니다. UI 요소는 3D 배치에 기반하여 Scene의 다른 오브젝트의 앞 또는 뒤에 Rendering 됩니다. 이 방식은 월드의 일부를 이루도록 의도된 UI에 유용합니다. 3. 구현 1. Canvas의 RenderMode를 World Space로 변경하고 Slider의 크기를 조정해서 위치시켜야 합니다. 2. HPBar는 부착된 오브젝트(플레이어 or 몬스터)의 위치를..

1. Object Pooling 오브젝트 풀링이란 ? 게임 내에서 반복적으로 생성/파괴되는 오브젝트들을 Instantitate/Destroy로 실행하게 된다면, 메모리 할당/해제를 하게 됩니다. 이는 많은 Garbage Collection을 발생시켜 CPU에 부담을 주게 됩니다. 오브젝트 풀링은 오브젝트를 담은 Pool에서 오브젝트를 빌리고 반납하는 것으로 Object들을 미리 생성하여 사용할 땐 활성화 시키고 반대로 사용하지 않을 땐 비활성화 시키는 방법입니다. 2. PoolManager 우선, 오브젝트를 구분해야 합니다. 모든 오브젝트들이 오브젝트 풀링을 사용하는 것이 아니기 때문입니다. 오브젝트 풀링을 사용하는 객체를 구분짓기 위해 아무것도 기능이 없는 Poolable 스크립트를 생성하여 컴포넌트로..

1. SoundManager BGM과 효과음을 다루기 위해 SoundManager를 다음과 같이 작성했습니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class SoundManager { //Audiosource = 소리의 근원지 (MP3 Player) //AudioClip = 음반 //AudioListner = 귀 AudioSource[] audioSource = new AudioSource[(int)Sound.MaxCount]; Dictionary audioClips = new Dictionary(); public void Init() { GameObject root = GameObjec..

1. QuaterView Camera QuaterView로 바라볼 수 있게 구현한 CamerController Script입니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraController : MonoBehaviour { [SerializeField] CameraMode cameraMode = CameraMode.QuarterView; [SerializeField] Vector3 delta = new Vector3(0,6,-5); // 카메라와 플레이어의 위치 차이 [SerializeField] GameObject player; public void SetPlayer(G..