본문 바로가기
반응형

개발/코드25

Unity Code) 스킬트리 구현하기 (SKill Tree Code Sample) 스킬트리 구현하기 (SKill Tree Code Sample) 간단하게 스킬 트리를 처리하는 코드를 구현하면서 간단하게 포스팅한다. 스킬에 대한 정보에 대한 연결을 처리하기위한 클래스이다. 간단하게 해당 스킬에 대한 이름정도만 가지고 있다. using System.Collections.Generic; public class SkillNode { public string Name { get; set; } public List Children { get; set; } public SkillNode Parent { get; set; } public SkillNode(string name) { Name = name; Children = new List(); } public void Ad.. 2024. 4. 8.
코드) 특정 각도로 바라보게 하기 특정 각도로 바라보게 하기 public void LookAt(Vector3 worldPosition) { Vector3 relativePosition = worldPosition - this.position; Quaternion toRotation = Quaternion.LookRotation(relativePosition); this.rotation = Quaternion.Slerp(this.rotation, toRotation, Time.deltaTime * damping); } public class ExampleClass : MonoBehaviour { public Transform target; void Update() { // Rotate the camera every frame so it k.. 2023. 11. 20.
코드) 문자열 문자와 숫자 구분하기 문자열 문자와 숫자 구분하기 문자열을 구분해서 숫자와 문장를 구분해서 사이즈를 변경하는 코드가 필요해서 작업하고 간략하게 기록한다. // 숫자와 단위를 분리 string[] parts = Regex.Split(_text, @"(? 2023. 10. 30.
코드) Unity-FPS 표기 (Frame Per Second) Unity-FPS 표기 (Frame Per Second) 개발을 하다 보면 FPS (Frame Per Second)를 출력해서 프레임 드롭이 생기는지 포인트를 확인해야 할 경우가 생긴다. 이럴 때 기본적으로 FPS 코드를 GUI로 표기하면 확인이 가능하다. 실제 서비스 빌드에서는 해당 디버깅 코드를 출력하지 않고 테스트용도 사용하는것을 추천드린다. public class FPS : MonoBehaviour { [Range(1,100)] public int m_fFontSize = 40; [Range(0,1)] public float Red, Green, Blue; float deltaTime =0.0f; #region Unity Method void Start() { this.m_fFontSize= (t.. 2022. 10. 27.
c#) 숫자 0으로 자리수 체우기 숫자 자리수 체우기 개발하는 도중에 숫자의 자리수가 고정적인 표현을 하는데 사용하는 코드이다. 반복문을 사용하거나 단일이면 string.format을 이용하는 방법등 여러가지가 있다. public string GetDigitsNumberView(int _digitsLength, float _value) { int valueLegnth = _value.ToString().Length; string zeroString = string.Empty; if (_digitsLength > valueLegnth) zeroString = "0".PadRight((_digitsLength - valueLegnth), '0'); return $"{zeroString}{_value}"; } String RadRight : .. 2022. 9. 20.
c#) 배열에서 배열을 중복 제거하기 배열에서 배열을 중복 제거하기 int 배열 a에서 int 배열의 b 항목을 제거하는 코드 using System; using System.Linq; public static int[] ArrayDiff(int[] a, int[] b) { return a.Where(n => !b.Contains(n)).ToArray(); } ★☆☆☆☆ 2022. 7. 27.
Unity) 달력 만들기 코드 (Make Calendar) 달력 만들기 코드 (Make Calendar) 간단하게 달력을 만드는 코드를 정리 겸 포스팅하게 되었다. 달력을 만드는 코드는 간단하게 DateTime을 활용해서 구현했다. 이전 달과 현재 달을 선택할수 있고, 토요일과 일요일을 구분했다. 현재 날짜(22.02.03일)를 기준으로 선택을 못하게 버튼으로 처리를 했고 Text Color를 좀 더 연하게 구성했다. Prefab과 Inspector의 속성은 다음과 같다. OrgNumber를 기준으로 dayNumber를 계산했다. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngin.. 2022. 2. 3.
Unity) 값 변경시 상시 변경(Value Change Action) 값 변경시 상시 변경(Value Change Action) 특정 값이 변경될 때 Action을 처리하는 abstract class로 Value에 값이 set 되는 과정에서 등록된 ValueChnaged의 Unity Action이 실행이 된다. 값이 변경될때마다 확인해서 처리하기보다는 등록하는 형식으로 구현하자. 따로 신경쓰지 않아도 처리가 되서 편리하게 사용이 가능하다. 옵저버 패턴과 비슷하다고 생각하면 이해하기 쉽다. using UnityEngine.Events; /// /// Value CHnage Action /// /// public abstract class ValueChange { private T _value; public UnityAction ValueChanged; public T Val.. 2022. 1. 20.
코드) 모든 조합의 경우의 수 구하기 모든 조합의 경우의 수 구하기 먼저 문자열의 첫 문자를 기준으로 1~N개의 문자들을 이용 가능한 모든 조합을 구하고 계속해서 첫 문자를 제외하고 다음 문자를 기준으로 2~N 문자들을 이용 가능한 모든 조합을 구한다. 이러한 방식으로 계속 재귀(Recursive)를 이용하여 조합을 구하면 전체 문자 조합을 구할 수 있다. 예시의 ABC를 입력하게 되면 결과값은 다음과 같다. public void RunTest() { StringBuilder sb = new StringBuilder(); StringCombination("ABC", sb, 0); } void StringCombination(string s, StringBuilder sb, int index) { for (int i = index; i 2021. 12. 23.
Unity)코드) Camera View 안에 있는 Object 구분하기 Camera View 안에 있는 Object 구분하기 Unity에서 Camera의 View안에 포함되어있는 오브젝트를 판단해야 할 상황에서 사용이 가능한 코드이다. 간단하게 설명하면 해당 오브젝트들이 카메라안에 있는지 여부를 판단해 준다. 코드를 보면 간단하게 체크해야하는 오브젝트를 Camera의 ViewPoint로 변환 값이 0~1 사이에 포함되어있는지 판단하는 코드이다. distance(z) 도 체크가 잘된다. public class CameraViewObject : MonoBehaviour { [SerializeField] private List findList = null; private Camera cam; void Start() { cam = UnityEngine.Camera.main; } /.. 2021. 5. 11.
코드) Switch Value 조건 범위 설정 Switch Value 조건 범위 설정 예전에는 안됬지만 지금은 가능할것 같아서 확인해봤는데 역시 가능하다. 이 문법이 가능한 환경은 다음과 같다. (Visual Studio 2017 / .NET Framework 4.6.2에서 기본적으로 사용 가능) int i = 63; switch (i) { case int n when (n >= 100): Console.WriteLine($"I am 100 or above: {n}"); break; case int n when (n = 50 ): Console.WriteLine($"I am between 99 and 50: {n}"); break; case int n when (n < 50): Console.WriteLine($"I am les.. 2021. 3. 16.
코드)정규식(Regex) 예제 정규식(Regex) 예제 정규식은 텍스트를 처리하는 강력하고 유연하며 효율적인 방법을 제공합니다. 정규식의 광범위한 패턴 일치 표기법을 사용하면 많은 양의 텍스트를 빠르게 구문 분석하여 다음을 할 수 있습니다. 특정 문자 패턴을 찾습니다. 텍스트의 유효성을 검사하여 미리 정의된 패턴(예: 전자 메일 주소)과 일치하는지 확인합니다. 텍스트 하위 문자열을 추출, 편집, 바꾸기 또는 삭제합니다. 보고서를 생성하기 위해 추출된 문자열을 컬렉션에 추가합니다. using System.Text.RegularExpressions.Regex를 선언한다. Dictionary info = new Dictionary{ {"achievement_1_win", "key_1"}, {"achievement_10_win", "key_.. 2021. 3. 12.
Unity)앱 종료 처리 코드 앱 종료 처리 코드 Unity에서 앱 종료 시 코드로 유틸 클래스에 있으면 편리하다. 플랫폼 별로 동작이 다르다. 에디터일 때와 그렇지 않을 경우에 대한 플랫폼 전처리가 포함되어있어서 Editor에서도 동작한다. public void OnApplicationQuit() { #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; #else Application.Quit(); #endif } ★☆☆☆☆ 2021. 2. 25.
코드)Linq - list 특정조건 비교 / list 와 list의 중복/ list 와 list 합집합 Linq - list 특정 조건 비교 / list와 list의 중복/ list와 list 합집합 작업하다 보니 list를 linq로 특정 조건에 맞는걸 데이터를 가지고 와야 하는 경우가 종종 생겨서 이렇게 정리하게 됬다. list 1의 값과 list 2의 값이 같은 리스트 리턴 List list1 = new List{1,3,5,2}; List list2 = new List{2,4,1}; var query = list1.Where(x=> list2.Any(y=>y == x)).ToList(); list 1에 중복된 값을 따로 리스트로 리턴 List list1 = new List{1,1,2,3,4,5,6,5}; var query1 = list1.GroupBy(x => x).Where(g => g.Count(.. 2021. 1. 13.
Unity)List Shuffle(리스트 랜덤으로 순서 변경) List Shuffle(리스트 랜덤으로 순서 변경) 리스트의 순서를 랜덤으로 변경하는 코드이다. 데이터를 개수만큼 생성 이후에 랜덤으로 순서를 변경한다. 기본적으로 Swap의 코드로 구성되어있다. Genergeneric type으로 선언해서 List의 어떤 형태든 가능하도록 했다. public List GetShuffleList(List _list){ for (int i = _list.Count - 1; i > 0; i--) { int rnd = UnityEngine.Random.Range(0, i); T temp = _list[i]; _list[i] = _list[rnd]; _list[rnd] = temp; } return _list; } System.Random r.. 2020. 12. 15.
반응형