본문 바로가기

c#

유니티 - 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; [.. 더보기
유니티 c# - 델리게이트(Delegate) Action 사용해 보기 델리게이트에 대해 찾아보면 첫 설명이 대부분 대리자라고 나옵니다. 예제로 제공되는 소스들은 함수 두어 개를 델리게이트에 연결하여 불러오는 방식입니다. 대충 어떻게 돌아가는지는 알겠는데 처음 접하면 별로 사용할 일이 없어 보입니다. 실제 게임에서 델리게이트를 어떻게 사용하면 좋을지 간단한 예제로 알아보겠습니다. 프로그램 어디서나 쉽게 접근할 수 있는 싱글톤 패턴으로 정의된 GameManager.cs 가 있습니다. public class GameManager : MonoBehaviour { public static GameManager instance; void Awake() { if (instance == null) { instance = this; DontDestroyOnLoad(this.gameObje.. 더보기
유니티 (Unity) - 처음 만들어 보는 인벤토리 이해하기 (Inventory) 인벤토리를 만들기 위한 기본 구조를 살펴보겠습니다. 인벤토리가 어떻게 작동하는지 알아보기 위한 아주 간단한 프로그램입니다. 사용된 아이콘 및 슬롯 이미지 https://assetstore.unity.com/packages/2d/gui/icons/rpg-inventory-icons-56687 RPG inventory icons | 2D 아이콘 | Unity Asset Store Elevate your workflow with the RPG inventory icons asset from REXARD. Browse more 2D GUI on the Unity Asset Store. assetstore.unity.com https://www.kenney.nl/assets/ui-pack-rpg-expansion.. 더보기
JAVA - String 값 한글자씩 표시해보기(타이핑 효과) String str = "abcdef"; str의 값을 한 글자씩 조금의 딜레이를 주어 화면에 나오게 하려면 public class Test { public static void main(String[] args) { Runnable r = new Runnable() { @Override public void run() { String str = "abcdef"; try { for (int i = 0; i < str.length() + 1; i++) { System.out.println(str.substring(0, i)); Thread.sleep(100); } } catch (InterruptedException e) { e.printStackTrace(); } } }; r.run(); } } str... 더보기
유니티 C# - Interface 게임에 적용해 보기 애매모호한 Interface를 이해하기 위한 실사용에서 도움이 될만한 간단한 예제입니다. 우선 게임 속 몬스터가 종류별로 10마리 있다고 하겠습니다. 게임을 진행하면서 플레이어가 공격을 할 때 Collider로 적을 감지해서 10마리의 몬스터중 어떤 몬스터인지 파악을 한 후 해당 몬스터에 대미지를 준다고 가정해 보면 private void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("Enemy")) { switch(other.gameObject.name) { case "EnemyA": other.gameObject.GetComponent().Damage(10); break; case "EnemyB": other.gameObject.GetComp.. 더보기