본문 바로가기

unity

유니티(Unity) - 글자 타이핑 효과(Typing) 우선 Canvas에 테스트를 위한 Text UI와 Button을 하나씩 만들었습니다. 둘 다 TextMeshPro를 사용하고 있습니다. 화면에 배치는 대충 이렇게 했습니다. Text의 정렬은 중앙으로 잡아 주었습니다. Button에 Typing.cs 스크립트를 넣고 Button 이벤트에 위 이미지처럼 TypingButton을 연결시켜 줍니다. using System.Collections; using UnityEngine; using TMPro; public class Typing : MonoBehaviour { [Header("Text UI")] public TextMeshProUGUI textUI; [Header("타이핑 지연 시간")] public float delayTime; IEnumerator .. 더보기
유니티 (Unity) - 확률 뽑기(생성) https://docs.unity3d.com/kr/2019.4/Manual/RandomNumbers.html 랜덤 게임플레이 요소 추가 - Unity 매뉴얼 여러 게임에서 임의로 선택되는 항목 및 값은 중요합니다. 이 섹션에서는 Unity에 내장된 랜덤 함수를 사용하여 일반적인 게임 역학을 구현하는 방법에 대해 알아봅니다. docs.unity3d.com 유니티에서 제공해 주는 확률 코드를 이용한 뽑기 및 기타 등등 여러 곳에서 사용할 수 있는 랜덤 확률 코드에 대해 알아보겠습니다. 코드만 복사 붙여 넣기 해서 사용하는 것보단 내용을 알고 사용하는 게 더 도움이 되겠죠? public class RandomTest : MonoBehaviour { [Header("확률 설정")] public float[] p.. 더보기
유니티(Unity) - 인스펙트 리스트 오류 (Inspector) 유니티 특정 버전에서 위 이미지처럼 인스펙터 창의 Serializable List 목록의 리스트 0번이 겹쳐 보이는 버그가 있습니다. 몇 개의 리스트를 사용하던 0번 목록이 겹치는 버그입니다. 해결 방법은 따로 없는 것 같습니다. 특정 버전에서 이런 문제가 발생하기 때문에 문제가 없는 버전으로 설치하는 방법뿐인 것 같습니다. 제가 사용했던 2021 버전 중 21.2.8 은 문제가 없었으며 그 이상 에선 다 겹치는 문제가 나타나더군요. 그리고 오늘 날짜 (6월 25일)의 최신 버전인 21.3.5에선 문제가 없었습니다. 아래 사이트에서 확인해 보시고 참고들 하세요. https://issuetracker.unity3d.com/issues/scriptableobject-with-an-array-of-serial.. 더보기
유니티(Unity) - 간단한 안개 효과 (Fog) 모바일 게임에서 사용하기 좋을만한 안개 효과에 대해 알아보겠습니다. 위 이미지처럼 지형이 있다고 가정하고 그 바탕에 안개로 사용될 Plane을 하나 만들어 줍니다. 위 이미지처럼 안개가 적용될 Plane을 만든 후 새로운 Material을 하나 생성합니다. URP를 사용한다면 Universal Render Pipeline / Particles / Unlit의 Material을 아니면 Particles / Standard Unlit의 Material을 생성합니다. Material의 Options 중 Surface Type을 Transparent로 적용해 주시고 Soft Particles를 체크하신 후 Near와 Far의 값을 조정해 주세요. 그리고 안개용으로 만들어 둔 Plane에 Material을 적용해.. 더보기
유니티 (Unity) - 게임에 다중 언어 (Localization) 적용하기 유니티에서 제공해 주는 다중언어 시스템을 이용한 게임 적용 방법을 알아보겠습니다. "사용된 유니티 버전은 2021.3 입니다. 버전에 따라 조금씩 차이가 있을 수 있습니다." 우선 Package Manager에서 Localization을 설치해 주세요. Project 창에서 "Language" 폴더를 하나 만들어 줍니다. (폴더의 이름은 다른 것으로 하셔도 됩니다.) Project Settings 창에서 Localization > Create를 클릭합니다. Create를 클릭하신 후 앞에 만들어 두었던 "Language" 폴더를 선택 후 저장. 폴더 저장 후 화면이 위와 같이 변경되면 Locale Generator를 클릭해 줍니다. 그럼 새창이 나오면서 게임에 적용될 언어를 선택할 수 있습니다. 우선 테.. 더보기
유니티 - CustomEditor 활용 (Inspector 꾸미기) 유니티에서 아이템이나 무기 등의 설정값으로 ScriptableObject를 사용하면서 해당 아이템이나 무기 등의 이미지를 상단에 표시해 주는 기능을 CustomEditor를 이용해 꾸며 보겠습니다. (아래 이미지 참조) 우선 사용자의 ScriptableObject 가 있을 겁니다. (아래 소스 참조) [CreateAssetMenu(menuName = "ScriptableObjects/WeaponValue")] public class WeaponValue : ScriptableObject { [Header("이름")] public string weaponName; [Header("이미지")] public Sprite weaponImage; [Header("파워")] public float Damage; [.. 더보기
유니티 - 커스텀 에디터 (Custom Editor) 커스텀 에디터 기능을 이용한 ScriptableObject 생성을 조금 더 편하게 도와줄 에디터를 만들어 볼까 합니다. 유튜브 AdamCyounis를 보다 편할 것 같아 만들어 보았습니다. https://www.youtube.com/channel/UC08QfQDLAd9D7aYPFgBUIng AdamCYounis Catch me live on twitch: Mon, Tues, Wednesday and Fri 1-6pm AEST. Twitch: http://twitch.tv/adamcyounis Twitter: http://twitter.com/adamcyounis Discord: https://discord.gg/9WkRG7s Become a Patron at https://www.patreon.com/a.. 더보기
유니티 - 싱글톤 패턴(Singleton) 싱글톤 패턴은 가장 많이 사용하는 기본 패턴이니 따로 설명이 필요 없을 것 같습니다. 바로 간편하게 적용할 수 있는 코드로 넘어가 보겠습니다. using UnityEngine; public class Singleton : MonoBehaviour where T : MonoBehaviour { public static T instance {get; private set;} protected virtual void Awake() { if (instance == null) { instance = (T)FindObjectOfType(typeof(T)); DontDestroyOnLoad(gameObject); } else { Destroy(gameObject); } } } protected virtual void.. 더보기
나무 소스 - 3D Low Poly 게임에 사용하려고 만든 나무 소스입니다. 필요하신 분들은 사용하세요. Tree.zip -> 블렌더 파일 및 재질 소스가 들어 있습니다. 나뭇잎. zip -> 나뭇잎을 제작할 때 사용한 포토샵 소스입니다. 처음 사용하실 때 이런 화면이 보일 겁니다. Tree.zip을 압축을 푸시면 나무에 관련된 재질들이 있는데 압축을 푼 폴더에 맞게 재질을 다시 적용해 주시면 됩니다. 폴더 아이콘을 누르신 후 압축을 푼 폴더에서 현재 창의 재질명과 같은 재질을 다시 지정해 주시면 됩니다. 재질 설정을 다 해 주셨다면 3D 뷰에서 나뭇잎을 선택하신 후 오른쪽 재질 중 Style 1 ~ 5번 중 하나를 선택하시면 나뭇잎 모양을 바꿀 수 있습니다. (아래 이미지 참조) 하나의 나무에 여러 나뭇잎 재질을 사용해서 분위기에 맞는 .. 더보기
유니티 (Unity) - 파일 데이터 비동기 방식으로 읽어 오기 유니티에서 게임의 설정을 Json 파일로 저장해 사용한다면 게임을 실행할 때마다 저장된 Json파일을 가져와 게임의 설정 값에 대입시켜 주면 될 것입니다. 문제는 JsonData.json 파일을 읽어 오는 도중에 게임 설정 값을 적용하는 코드로 넘어가 버리니 Null 에러가 발생하게 됩니다. 비동기 방식으로 JsonData.json 파일을 가져온 후 완료되었다면 게임 설정 값에 적용하는 방식을 알아보겠습니다. [System.Serializable] public class GameData { public int playerLevel; public int playerCurrntHp; public float playerPower; } 우선 JsonData.json으로 변환될 간단한 GameData 모델이 있습.. 더보기