반응형

UNITY/Script 9

[UNITY C#] 코루틴(Coroutine) 간단 정리

코루틴 - Unity 매뉴얼 코루틴 - Unity 매뉴얼코루틴을 사용하면 작업을 다수의 프레임에 분산할 수 있습니다. Unity에서 코루틴은 실행을 일시 정지하고 제어를 Unity에 반환하지만 중단한 부분에서 다음 프레임을 계속할 수 있는 메서드입니docs.unity3d.com코루틴 (Coroutine)코루틴은 각 프레임 시퀸스에 대해서 명령을 처리해야 하는 경우에 Update 메서드 대신 사용하는 작업입니다.void Fade() { SpriteRenderer spriteRenderer; for(float a = 1f; a >= 0f; a -= 0.05f) { Color color = spriteRenderer.color; color.a = a; spriteRenderer.color = color; } ..

UNITY/Script 2024.10.21

[UNITY C#] Localization을 이용한 대화 시스템 구현

대화 시스템 (Dialogue System) 대화 시스템은 캐릭터 간의 상호작용을 통해 게임의 서사를 더 생동감 있게 전달할 수 있습니다. 간단한 게임의 경우, Unity에서 이 시스템을 만드는 것은 어렵지 않습니다. 하지만 게임의 사이즈가 커지면서 대화의 양이 많아지고 여기에 현지화 기능까지 추가한다면, 이 기능들을 모두 담은 시스템을 구현하기는 까다로울 수 있습니다.  Unity에는 강력한 현지화 기능을 제공하는 Localization이라는 Package가 존재합니다. 이 현지화 기능을 대화 시스템에 적용시키기 위해서 다음과 같은 작업을 진행합니다. Package 설치 및 기본 설정https://hyeokjunjjang.tistory.com/entry/UNITY-Package-Localization-..

UNITY/Script 2024.09.26

[UNITY C#] Intro Loopable AudioSource 구현

https://johnleonardfrench.com/ultimate-guide-to-playscheduled-in-unity/ How to Queue Audio Clips in Unity (the Ultimate Guide to PlayScheduled) - John Leonard FrenchLearn How to queue up Audio Clips (seamlessly), make dynamic music & beat-match audio in my ultimate guide to PlayScheduled in Unity.johnleonardfrench.comIntro Loopable MusicUnity에서는 [AudioSource Component]의 Loop 옵션을 체크하여 사운드 파일이 종료되..

UNITY/Script 2024.09.26

[UNITY C#] 팝업 상자(Pop-up Box) UI 구현

기본 설정 Canvas를 생성하여 UI를 구성하고 팝업 상자를 띄울 Panel Object를 생성합니다. (Canvas > Render Mode를 Screen Space - Camera로 설정했습니다.) (Panel은 Raycast Target을 끄거나 최상단 자식으로 두어야 합니다. 마우스 Click, Enter, Exit 이벤트를 방해할 수 있습니다.) Popup Panel의 자식으로 팝업 상자와 텍스트를 추가합니다. (텍스트는 TextMeshPro를 사용했습니다.) 스크립트 추가 PopupManager.cs 더보기 using System.Collections; using UnityEngine; using TMPro; /// /// 팝업 상자를 관리하는 클래스입니다. /// public sealed ..

UNITY/Script 2022.08.08

[UNITY C#] 원근감있는 배경 : 패럴랙스 스크롤링(Parallax Scrolling) 구현

패럴랙스 스크롤링 (Parallax Scrolling) 패럴랙스 스크롤링(Parallax Scrolling)은 스크롤의 진행도(카메라의 위치)에 따라서 관측 위치에 따른 물체(배경)의 위치나 방향, 상대 속도에 차이를 두어 원근감을 갖도록 하는 기법입니다. Unity 2D에서 3D와 비슷한 효과를 내기 위해서 이 기법을 사용합니다. 구현하기 다음과 같이 카메라가 이동할 수 있는 범위인 ① Object(Ground)와 패럴랙스 스크롤링을 적용할 배경인 ②~ Object(Background) 1개 이상을 생성하고 Sprite Renderer의 Sorting Layer와 Order Layer를 조정하여 원하는 모습으로 설정합니다. 위에서 생성한 모든 Object의 양쪽 끝에 Point Object를 생성합니다..

UNITY/Script 2022.07.10

[UNITY C#] Unity Attribute 정리

https://docs.unity3d.com/kr/2020.3/Manual/Attributes.html 속성 - Unity 매뉴얼 Attributes 는 스크립트에서 클래스, 프로퍼티 또는 함수 위에 명시하여 특별한 동작을 나타낼 수 있는 마커입니다. 예를 들어, 프로퍼티 선언 위에 HideInInspector 속성을 추가하여 인스펙터가 공용 docs.unity3d.com 2020.3.32f1 버전 기준 * 대부분의 필드 데이터에 대한 Unity Attribute는 속성을 추가할 필드 데이터에 public이나 [SerializableField] 속성을 추가하여 Inspector창에 표시되도록 해야 합니다. AddComponentMenu [AddComponentMenu("{메뉴 이름}")] // 클래스 A..

UNITY/Script 2022.04.09

[UNITY C#] SceneManagement 씬 전환 구현

SceneLoader.cs using UnityEngine.SceneManagement; /// /// Scene을 불러오는 정적 클래스입니다. /// public static class SceneLoader { /// /// 마지막으로 방문했던 Scene의 이름입니다. /// static string sceneName_lastVisited; /// /// Scene을 불러옵니다. /// /// 불러올 Scene의 이름입니다. public static void LoadScene(string sceneName) { sceneName_lastVisited = SceneManager.GetActiveScene().name; // 마지막 씬 이름을 저장합니다 SceneManager.LoadScene(sceneN..

UNITY/Script 2022.02.15

[UNITY C#] 게임 데이터 직렬화(Serialize) 저장 및 로드 구현

데이터 저장 및 로드를 구현하기 위해서 데이터를 저장할 클래스를 만들어야 합니다. [System.Serializable] // 이 클래스를 파일로 저장하기 위해서 직렬화를 가능하게 합니다. public class Data { public ulong? highScore; public int? coin; //... public float? audio_BGM, audio_SFX; public UnityEngine.SystemLanguage? language; } 위와 같이 클래스를 생성하고 저장할 필드 데이터를 작성합니다. * Data 클래스에 클래스 데이터를 추가하는 경우 해당 클래스에 [System.Serializable] 속성을 추가해야 합니다. DataManager.cs using System.Runt..

UNITY/Script 2022.02.07

[UNITY C#] ObjectPool 구현

ObjectManager.cs using System; using System.Collections.Generic; using UnityEngine; /// /// ObjectManager에서 관리할 오브젝트 리스트를 나타냅니다. /// public enum ObjectList { Object1, Object2 } /// /// ObjectPool을 관리하는 클래스입니다. /// public class ObjectManager : MonoBehaviour { static ObjectManager instance = null; public static ObjectManager Instance { // ObjectManager 싱글톤을 구현합니다. ObjectManager.Instance. 형식으로 접근합니..

UNITY/Script 2022.02.04
반응형