본문 바로가기

전체 글

(195)
[Behavior Designer] 01 . Behavior Tree [Behavior Tree] [FSM (유한 상태 기계) ] =>상태와 전이로 구성되는 특정 유형의 로직을 제공한다 . 상태는 동시에 실행되는 행동 (애니메이션,사운드,대기)의 집합이다. 전이는 조건을 포함한다. 전이의 조건이 충족된다면 , 상태는 다른 상태로 이동한다 . 유니티의 Mecanim (애니메이션 상태 머신 시스템)을 예로 들 수 있다. => 상태가 많아진다면 노드가 복잡해지며 서로 다른 문맥을 가진 로직을 재사용 할 수 없다. 이를 보완한것이 HFSM 이다. [HFSM (계층적 유한 상태 기계) ] =>HFSM은 FSM들을 그룹화 , 계층화 함으로 특정 문맥의 상태를 재사용 할 수 있다. 또한 FSM과 같이 현재의 문맥 / 상위 상태를 파악하기 쉽다. 최근까지 게임 AI에서 자주 사용되었다...
[자료구조] 리스트 - 02 . 더블 링크드 리스트 [더블 링크드 리스트] [더블 링크드 리스트] =>링크드 리스트의 탐색기능을 개선한 자료구조 : 헤드 -> 테일의 일방탐색에서 양방향 탐색이 가능하다 . [구조] =>자신의 앞에 있는 노드 와 자신의 다음 노드 두가지 포인터를 가지고 있다. [구조체로 표현] =>구조체로 표현해보자면 다음과 같다. typedef struct tagNode { int Data;//데이터 필드 struct tagNode* PrevNode;//그전 노드를 가리키는 포인터 struct tagNode* NextNode;//다음 노드를 가리키는 포인터 }Node; [더블 링크드 리스트의 주요 연산] [노드의 생성과 소멸] 생성 //노드 생성 void DLL_CreateNode(ElementType data) { Node* NewNo..
[Android] gradle 오류 다른 컴퓨터에서 유니티를 통해 안드로이드 프로젝트를 빌드하려 할 때 해당 오류를 겪었다. [해결] [로그] : 해당 로그를 띄우며 APK 파일을 뽑지 못하였다. 유니티 버전은 2021.3.5f1 을 사용하였다. [시도] 키스토어 설정 Custom Gradle Template 변경 안드로이드 NDK/SDK 재설치 다시 작업 Gradle Cash 삭제 Gradle 파일 코드 수정 Assets / Packages / ProjectSettings 만 남기고 다 지우기 등등 여러 시도를 하였고 모두 실패하였다. [해결] Project Settings - Build - Custom Main Manifest를 체크 해제하여 해결하였다. Android 매니페스트에 관하여 해당 세팅은 유니트 프로젝트의 Custom Ma..
[자료구조] 리스트 - 01. 링크드 리스트 < 예제 > 앞서 봤던 SLL을 구현하여 코드상에서 확인해보겠다. 01 . 헤더 파일 //SLL.h #ifndef LINKEDLIST_H #define LINKEDLIST_H #include #include typedef int ElementType; typedef struct tagNode { ElementType Data; struct tagNode* NextNode; }Node; //생성 Node* SLL_CreateNode(ElementType _Data); //소멸 void SLL_DestroyNode(Node* Node); //추가 void SLL_AppendNode(Node** _Head, Node* _NewNode); //앞에 삽입 void SLL_InsertNodeAtFront(Node* Head, ..
[IOS]유니티 애플로 로그인 구현하기 2 [실제 구현] 애플 로그인 구현하기 1 포스트에서는 git hub의 프로젝트를 살펴보았다. 이를 실제 프로젝트에 적용해보았다.공부하는 용도이기에 틀리거나 빠진것 말씀 해주시면 감사하겠습니다 ..! [로그인] 만약 처음 로그인이라면 애플 로그인을 할 것이고 , 이미 한 상태라면 해당 애플 계정이 유효한지 확인한다. public void Login(System.Action _callback) { //최초 1회 로그인을 했다면 if (PlayerPrefs.HasKey(AppleUserIdKey)) { var storedAppleUserId = PlayerPrefs.GetString(AppleUserIdKey); this.CheckCredentialStatusForUserId(storedAppleUserId,_..
[IOS] 코코아 팟 설치 오류 해결 [설치 오류] [문제상황] 빌드에 영향을 미치진 않지만 유니티에서 코코아팟을 설치하지 못한다는 로그가 발생하였다 [원인] : Ruby의 버전이 낮아 새로운 버전의 cocoaPods를 설치하지 못한다. 유니티 코코아 팟 설치 실패 오류 해결 [HomeBrew 설치] [Homebrew 란] 맥 os용 패키지 관리 애플리케이션이다. 홈브루 공식문서 주로 커맨드 라인 도구나 시스템 패키지 설치에 사용하며 , 캐스크 확장을 통해 GUI 애플리케이션 설치에도 사용이 가능하다 . 홈브루에 관하여 편하게 사용한다는 장점이 있지만 커뮤니티 기반으로 운영되기에 패키지의 안정성이 보장되지 않는다. [설치하기] /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Hom..
[자료구조] 리스트 - 01 . 링크드 리스트 [링크드 리스트] [자료구조] 자료구조란 데이터를 효율적으로 조직하고 저장하는 방법 [리스트] 만약 임의의 디렉토리 내부의 파일의 목록이 필요하다면? =>그 크기가 얼마인지 가늠이 안되므로 배열을 얼마나 선언 할 지 정하기 힘들다 해결을 위해 필요한 자료구조는? 배열처럼 데이터 집합을 보관하는 기능을 가진다. 유연하게 크기를 바꿀 수 있어야 한다. =>이것이 리스트 (List : 목록) [링크드 리스트] 링크드 리스트 "노드를 연결해서 만드는 리스트" 리스트를 구현하는 여러 방법중 가장 간단한 방법이다. 노드 리스트내 각 요소는 노드 (Node : 마디) 라고 부른다. =>노드는 데이터를 보관하는 필드 / 다음 노드와의 연결고리 역할을 하는 포인터로 구성된다. =>노드를 엮은 링크드 리스트는 헤드 (첫번..
26장 . 전처리기에 의한 매크로 처리 [전처리기에 의한 매크로 처리] [전처리기에 의한 전처리] 프로그램 작성 -> 컴파일 -> 링크 -> 실행파일 생성 프로그램 작성 -> 전처리 -> 컴파일 -> 링크 -> 실행파일 생성 [#define으로 시작하는 전처리기 지시자] 컴파일러에 의해 처리되는 것이 아니다 전처리기에게 단순 치환 작업을 요청할 때 사용되는 지시자 . #define PI 3.1415 [매크로를 이용한 함수의 구현] [메크로 함수란] 매크로를 기반으로 정의되는 함수 (함수가 아니라 매크로 . 단지 함수의 특성을 지닐 뿐) #define SQUARE1(x) x*x #define SQUARE2(x,y,z) (x+y+z) int main(void) { SQUARE1(3); } 장점 : 자료형에 독립적이며 , 실행 속도가 향상된다 (코..