본문 바로가기

분류 전체보기85

[Unity] AsyncOperationHandle 보호되어 있는 글 입니다. 2025. 12. 2.
[Unity] LoadAssetAsync Release InstantiateAsync ReleaseInstance 보호되어 있는 글 입니다. 2025. 12. 2.
[C#] [Unity] C# Action 과 UnityAction 우선 둘 다 거의 비슷하지만, System.Action 은 순수 C# 의 델리게이트이고,UnityEngine.Events.UnityAction 은 유니티 용으로 따로 정의된 델리게이트입니다.그래서 보통 일반 코드에는 Action, UnityEvent 랑 붙을 때만 UnityAction 을 사용하게 됩니다.사용using System; // C# 용 Actionusing UnityEngine.Events; // 유니티 용 UnityAction 위와 같이 각각 정의돼있는 형식을 가져와 사용할 수 있습니다.- Action : 닷넷( .NET ) 표준 라이브러리로 System 네임스페이스에 정의돼있습니다.- UnityAction : 유니티 전용으로 UnityEngine.Events 네임스페이스에 정의돼있습니다... 2025. 11. 19.
desmos 보호되어 있는 글 입니다. 2025. 10. 21.
[Unity] UniTask 의 토큰 Token (= CancellationToken) UniTask 에서 Token(CancellationToken) 은 쉽게 말하면, "멈춰!" 토큰입니다. Token (= CancellationToken)토큰은 비동기 작업이 더 이상 의미가 없을 때, 바로 멈출 때가 되었다고 알려주는 플래그 같은 것입니다.프로그램(게임)에서 기다리던 작업을 계속할 이유가 없어졌을 때, 토큰으로 취소하게 됩니다.(유니테스크 간단 정리는 아래 포스트에 해두었어용)https://bulletprooves.tistory.com/87 [Unity] UniTaskUniTask 와 코루틴을 비교해서 설명하면 이해가 쉽다고 합니다. UniTaskUnity 에서 사용하는 Task 대체 라이브러리라서 UniTask 라고 부릅니다.C# 의 async/await 구문을 좀 더 유니티에 최적.. 2025. 10. 7.
[Unity, C#] Singleton 싱글톤 혼자야? Singleton프로그램(게임) 전체에서 객체가 하나만 생성되는 것을 보장하고,그 프로그램의 어디에서든지 접근할 수 있도록 만드는 디자인 패턴 중 하나입니다.가장 간단한 예시로, GameManager, SoundManager, RenderingManager 등... 이 있습니다. (Design-Pattern 관련해서는 아래에 정리해 두었어용)https://bulletprooves.tistory.com/46 [OOP] Design Patterns ( GoF )Object Oriented 프로그래밍에서 협업을 위해 설계를 할때,내가 작성한 코드, 다른 분께서 작성한 코드를 전달해줄 때 생기는 어려움을 극복하기 위해디자인 패턴이라는 일종의 의사소통 방법을 사bulletprooves.tistory.c.. 2025. 9. 7.
[C#] ref, out, in 키워드 C# 에서 매개변수로 value 타입 값을 전달할 때, 보통 call by value 입니다. ref, out, in 키워드를 전부 매개변수 한정자라고 부릅니다. ref 부터 설명하겠습니다.ref하지만 ref 키워드를 사용하게 되면 value 타입도 call by reference 로, 참조 전달됩니다.호출한 쪽의 변수를 참조로 넘겨서, 넘겨 받은 메서드 안에서 값을 변경했을 시,호출한 원본 쪽에서도 값의 변경이 반영되도록 하는 것입니다.다시말해 "호출한 놈의 변수를 수정할 수 있다!" 가 특징이 되겠습니다. 아래 간단한 pseudo 코드로 확인하겠습니다.void AddOne(ref int x) // 시그니처에 ref 키워드{ x += 7; // 호출한 놈의 변수도 변경}in.. 2025. 8. 30.
[C#] delegate, Action / Func / Predicate 예전 포스트에서 콜백 개념과 함께 한번 다뤘었지만, 다시 한번 정리해봤습니다. delegate델리게이트, 우리말로 대리자. (야 대리불러~ )메서드 시그니처 (매개변수나 반환형) 가 같은 메서드를 가리키면서,나중에 다른 클래스에서 크 메서드를 대신 호출할 수 있게 해주는 타입입니다.Callback 콜백 함수, 이벤트 처리 등에서 많이 사용합니다. delegate 는 참조 타입 객체입니다. 그렇기에 생성 시 할당이 됩니다.쉽게 생각해, 변수에다가 숫자나 문자열을 담듯이,메서드를 담는 변수라고 생각해봅시다. 선언은 아래 처럼 할 수 있습니다.public delegate void Notifier(string message);// string 을 매개인자로, 리턴 없는 void 메서드를 담을 수 있는 타입을 .. 2025. 8. 26.
[C#] Lambda Expression 람다식 Lambda, 대학교에서 수학 배울 때 선형대수학의 고유값(eigen) 이랑다변수 미적분 교과목에서 라그랑주(Lagrange)승수 법이라고 배울때,계수 붙일 때 사용하는 느낌으로 자주 쓰는 기호 λ 입니다. (가물가물하지만 그랬던 거 같아용)프로그래밍에서는 간단하게 메서드를 표현하고자 할 때 사용하는 것을 람다식이라 합니다. 람다식 (Lambda Expression)함수에서 매개변수를 간단히 전달해 바로 사용하고 싶을때 사용할 수 있는 표현식으로써,무명함수 (Amomymous Function) 라고 합니다.가장 기본적인 문법 모양은 아래와 같습니다.(Parameters) => {Expression}; Parameter 가 매개인자, Expression 이 실행할 문장 코드가 되겠습니다. 몇 가지 예로 .. 2025. 8. 24.
[Unity] UniTask UniTask 와 코루틴을 비교해서 설명하면 이해가 쉽다고 합니다. UniTaskUnity 에서 사용하는 Task 대체 라이브러리라서 UniTask 라고 부릅니다.C# 의 async/await 구문을 좀 더 유니티에 최적화해 사용할 수 있게 해줍니다.아래 깃허브 링크입니다.https://github.com/Cysharp/UniTask GitHub - Cysharp/UniTask: Provides an efficient allocation free async/await integration for Unity.Provides an efficient allocation free async/await integration for Unity. - Cysharp/UniTaskgithub.com System.Thr.. 2025. 7. 10.
[Unity] UniTask 보호되어 있는 글 입니다. 2025. 7. 3.
[Unity] NGUI 보호되어 있는 글 입니다. 2025. 7. 2.
[SVN] TortoiseSVN Microsoft Window에서 사용할 수 있는 SVN, TortoiseSVN 입니다.설치한 후 재부팅이 필요합니다. TortoiseSVN TortoiseSVN은 설치하게 되면 윈도우 탐색기 Context Menu에 등록되어 편리하게 이용할 수 있습니다.용어들을 아래 간단하게 요약해보았습니다.Update다른 사람이 수정한 내용 받아오기Commit내가 변경한 사항을 서버에 업로드하기Add새 파일을 버전 관리에 추가하기Delete파일 삭제 (단순 삭제가 아닌 SVN 관리 삭제... 조심)Log파일의 변경 이력 보기Revert로컬 변경 사항 취소하기 항상 작업 전에 Update하는 것을 잊지 않고, 업데이트하여 파일들을 최신 버전으로 유지하는 것이 좋습니다.작업이 끝난 후엔 Commit하여, 꼭 의미가 잘.. 2025. 7. 1.
[SVN] Subversion SVN Subversion(서브버전)은 CLI에서 사용하는 명령어를 따서 'SVN'이라고 줄여부른다고 합니다. SVN; Subversion풀네임은 'Apache Subversion' 이며, 프로젝트의 버전관리를 위해서 사용하는 Git과 같은 형상관리 도구입니다.SVN은 CVS가 가진 한계점(파일 이름 변경 불가, 디렉터리 이동 및 변경 불가, 파일 이름 유니코드 제한적)을극복하기 위해서 만들어진 도구입니다. Client - Server Model 이기 때문에, 서버가 개발자들의 컴퓨터에 둘 수도 있고,네트워크에 연결된 별도의 컴퓨터에 두고 사용할 수도 있습니다. SVN의 큰 특징은 Centralized version control (중앙 집중식 버전관리) 입니다. Centralized Version Contr.. 2025. 6. 28.
[CS] Logic Gate 논리 회로 ... with Minecraft 주말에 가끔 마인크래프트를 플레이하며 별장도 짓고, 농사도 짓다가 번뜻,RedStone 레드스톤으로... 1학년 전공시간에 배웠던 회로를 만들어볼까해서 정리해봤습니다. RedStone's Elements (소자)Redstones (전원, 도선)Repeater (중계기)Comparator (비교기)Logic Gate (논리회로)NOTANDORXORNANDNOR먼저 레드스톤의 기본적인 요소들 먼저 살펴본 다음, 논리회로로 들어가겠습니다.RedStone's Elements (레드스톤 소자)마인크래프트 인벤토리 (E) 를 눌러 RedStone 카테고리에 들어가면,레드스톤 장치를 구현할 때 필요한 아이템들을 사용하실 수 있습니다.Redstones 각각 Redstone Block 과 Redstone Torch 라.. 2025. 6. 24.
[캡스톤] 캡스톤 디자인 비개발 설계 파트 시간이 많지는 않았기에, week 1 ~ 3 동안 설계와 동시에 간단한 기능 정도는 같이 개발하며 진행했었습니다. 스케치캡스톤 디자인으로 만들 게임에 처음부터 Machine Learning AI 를 추가할 생각은 없었습니다.하지만 2024년도는 한창 AI 열풍이었기 때문에 1주일간의 고민 끝에, 게임에 AI 기능을 넣어보자 결정했습니다. 뽀송하게 샤워하고 침대에 엎드려 노트에 신나게 그리던 기억이 납니다. 플레이어의 반응속도를 모아 적절하게 유저별 맞춤 난이도 조정 기능도 추가해보자 계획했습니다. 커스터마이징은 예전 프로젝트에서 재밌게 만든 기억이 있었기 때문에, 시간이 나면 꼭 추가하기로 했습니다. 레퍼런스 Ref 1) ‘Paper Mario’의 전투 시스템. 보드게임과 같은 turn-based (턴.. 2025. 6. 23.
[CS] DI Dependency Injection 디펜던시 인젝션, 우리말로 '의존성 주입'인데저는 어감 때문에 처음엔 조금 낯설게 느껴졌습니다. DI; Dependency InjectionDependency Injection(의존성 주입)을 프로그래밍 차원에서는클래스가 필요한 객체(의존성)를 스스로 생성하지 않고, 외부에서 주입받는 방식을 말합니다. 먼저 Dependency(의존성)는, "A depends on B." ("A가 B에 의존한다.") 관계 입니다.그렇기 때문에, 의존대상인 B가 변한다면 → A에게도 영향이 갈 것입니다.예를 들어 자동차와 엔진으로 비유해서 설명드리자면,Car는 Engine 없이 작동할 수 없으니까, Car는 Engine에 의존하는 것을 Dependency (의존성)이라고 합니다.원래는 Car가 스스로 직접 Engine 객.. 2025. 6. 23.
[Unity] 보호되어 있는 글 입니다. 2025. 6. 21.
[Unity] Asset Bundle & Addressables Addressables 를 알아보기 위해선 Asset Bundle 에 대해 간단히 알아보면 좋겠습니다.개발자가 Asset 을 서버 묶어 올려두고, 플레이어는 런타임에 이를 받아와 실행할 수 있습니다.(유니티 코리아 개발자님의 영상을 참고했습니다. https://www.youtube.com/watch?v=3f2XjEGDZ2s ) 자세한 건 아래를 참고해주시길 바랍니다.https://unity.com/kr/blog/engine-platform/addressables-planning-and-best-practices Addressables: 계획 및 베스트 프랙티스이 블로그 게시글에서는 유니티 시니어 테크니컬 프로덕트 매니저 제프 리센미가 프로젝트에서 Addressables 시스템을 최대한 활용하기 위해 개발.. 2025. 6. 20.
[Unity] Addressable #1 (Local) Asset Bundle / Addressable 을 이용하면, 게임 로딩할 때 추가 파일 다운로드를 구현할 수 있습니다.https://www.youtube.com/watch?v=Z84GCeod_BM 더블엘님의 Addressable 영상을 참고했습니다. Addressable System overviewAddressable 은 Asset 들을 효율적으로 관리하기 위한 확장된 시스템입니다. Set UpAddressables 셋업 부터 해보겠습니다. 먼저 Package Manager 에 들어가서 Addressable 패키지를 설치해 줍니다. 그 다음, Window > Asset Management > Addressable > Groups 를 눌러, Addressablees Groups 창을 띄웁니다.Profi.. 2025. 6. 19.
[C#] HashSet<T> HashSet은 System.Collections.Generic 네임스페이스에 포함된 클래스로 집합(Set) 자료구조입니다. HashSet내부적으로 Hash Table 이라는 구조를 기반으로 구현되어 있으므로, 빠른 검색과 추가, 삭제가 가능합니다.집합(set) 이기 때문에 기본적으로 순서가 보장돼있지 않으며, 중복을 허용하지 않습니다. (데이터의 유일성) 아래는 기본 구조입니다.using System;using System.Collections.Generic;class Program { static void Main() { HashSet fruits = new HashSet(); fruits.Add("Apple"); fruits.Add("Banana"); .. 2025. 6. 17.
[Algorithm] Brute Force 브루트 포스 알고리즘이라고 하기도 뭐 합니다.암호학에서는 전수조사 (Exhaustive Key Search) 라고도 부르며, 무차별대입(공격) 이라도 부릅니다. Brute Force 브루트 포스수학적으로 계산 노가다하는 행위를 학술적으로 부르는 개념이라고 합니다.시간과 자원이 정말정말 풍부하다면, (비효율적이기도 하지만! 이라고 역접을 써서 설명할 수 있겠네용 ㅎㅎ)이론적으로 가능한 모든 수를 대입하므로 정확도 100%를 보장합니다. 1번 컴퓨터는 000~099 까지, 2번 컴퓨터는 100~199 까지... 이런식으로 병렬식으로 처리할 시 무서워질 수도 있습니다.(밑에는 암달의 법칙 (Law) 에 대한 설명으로, 병렬화에 대한 설명과 연관지어 떠올리실 수 있어용)https://ko.wikipedia.org/wiki.. 2025. 6. 16.
[Algorithm] Euclidean algorithm GCD 유클리드 호제법 최대공약수 Euclidean algorithm 은 유클리드 호제법이라고도 하며,이 알고리즘으로 Greatest Common Divisor; GCD 최대공약수를 구할 수 있습니다.(GCD 를 응용해 Least Common Multiple; LCM 최소공배수도 구할 수 있어용) 유클리드 호제법 (GCD 최대공약수)두 양의 정수 a, b (a > b) 에 대하여, a = bq + r (0 a, b 의 최대공약수는 b, r 의 최대공약수와 같다. 즉,gcd(a, b) = gcd(b, r)r = 0 이라면, a, b 의 최대공약수는 b 가 된다. 쉽게 말하자면, 큰 놈과 작은 놈의 최대공약수는,큰놈 % 작은놈 = R 이라고 할 때, (큰놈을 작은놈으로 나눈 후 나머지를 R 이라고 할 때,)R 과 작은놈의 최대공약수와 같.. 2025. 6. 15.
[캡스톤] UI/UX 와이어 프레임 Notion에 기록한 제 캡스톤 개발 일지를 옮겨왔습니다. UI/UX 와어이 프레임 만들기상호작용 가능한 버튼 UI 는 붉은색,특정 정보를 표시할 영역은 회색 으로 구분했습니다.Figma 를 사용해 아래와 처럼 만들었습니다.프로토타입 기능으로 버튼을 누르면 어느 레이어로 이동하는지 화살표가 나타나 있습니다. 1. 시작화면과 메뉴버튼 위치는 거의 비슷하지만, 캐릭터 커스터 마이징 ( closet ) 메뉴는 제외하고 '깃발' 메뉴를 추가했습니다. 2. 메뉴별 화면계획했던 거랑 이것 저것 많이 달라졌습니다.게임 기능보다 메뉴에 더 신경을 많이 쓴 거 같습니다. 3. 게임 플레이 화면어떻게 만들어야 재밌을 지 고민을 많이 해봐야겠습니다. 참 재밌었는데... 다신 돌아오지 않을 학부생 시절의 마지막 추억인 것 .. 2025. 6. 12.