전체 글

반갑습니다! 개발한 프로젝트들과 공부한 내용들을 정리하여 게시하고 있습니다.
·강의 공부
이제 Target도 만들었고 성공횟수 계산 모듈도 만들었는데, Target으로 뭘 해야 성공횟수를 받을 수 있는지에 대한 정보가 없다. 이를 위해 분류의 목적으로 다용도로 사용될 Category를 만들것이다. Category class 생성 ScriptableObject를 상속받아주고, 비교를 위한 string 변수 codeName과 인스펙터에 보여지는 displayName을 만들어준다. 프로퍼티도 만들어준다. Category는 보통 코드네임을 이용해 비교를 하는 경우가 많은데, 편의성을 위해서 Category와 문자열을 바로 비교할 수 있도록 비교 연산자를 추가해준다. using문 System과 IEquatable 인터페이스를 상속받는다. Equals 함수를 만들어준다. 널체크, 값비교, 타입비교를 해..
·C# 기초
https://wonseok1112.tistory.com/27  [C#][개념] 스레드와 동기/비동기프로세스(Process)와 스레드(Thread) 우리가 사용하는 운영체제는 스레드로 이루어진 프로세스들로 이루어져 있다. 프로세스(Process)란? 운영체제에서 할당하는 작업의 단위이다. 우리가 유튜브 뮤직wonseok1112.tistory.com동기/비동기와 스레드/멀티스레드의 개념에 대해 설명한 글을 보고 오시면 이해하는데 많은 도움이 됩니다.  유니티에서의 대부분 로직은 동기 방식으로 작성되며, 흐름(Flow, Stream)을 관리하거나 시간을 조절해 시행해야하는 작업은 코루틴(Coroutine)이라는 기능을 활용하여 구현된다. 비동기 방식을 유니티(Unity)에서 언제 사용하는가?사실 게임 개발에..
·C# 기초
프로세스(Process)와 스레드(Thread)   우리가 사용하는 운영체제는 스레드로 이루어진 프로세스들로 이루어져 있다.  프로세스(Process)란?운영체제에서 할당하는 작업의 단위이다. 우리가 유튜브 뮤직을 들으며 인터넷 서핑을 하는 행위가 여러 프로세스를  동시에 실행하는 것이다.프로세스 간에는 메모리 등의 자원을 공유하지 않는 등 서로 영향을 끼치지 않는다. 스레드(Thread)란? 프로세스 내에서 실행되는 흐름의 단위이다. 하나의 프로세스는 스레드를 여러 개 가질 수 있다. 스레드들은 부모 프로세스의 자원을 공유한다. 즉, 같은 메모리에 접근할 수 있다. 한 프로세스에서 여러 스레드가 자원을 공유하고 있기 때문에 잘못 구현하면 다른 스레드에도 치명적인 영향을 미쳐 전체적으로 프로세스가 오작동..
·C# 기초
dynamic 이란?  컴파일 시점이 아닌, 런타임 시점에서 형식 검사를 수행하게 하는 키워드이다.   [C#] 일반화 프로그래밍 (제네릭/Generic)C# / Unity에서 일반화란 특수한 개념으로부터 공통되는 개념을 찾아 묶어 일반화 시키는 것이다. 일반화 하는 대상은 데이터 형식(type)이다. 일반화를 할 때 object 형식을 쓰는 것이 편리하다. objectwonseok1112.tistory.com설명의 이해를 돕기 위한 제네릭 참고자료 제네릭 초기값 설정 제네릭 메서드를 호출 할 때 매개변수로 들어온 자료형(T)와 똑같은 자료형의 변수를 만들고 거기에 초기값을 설정해야 하는 예시를 들어보겠다.  제네릭 메소드 SetArray를 호출하여 특정 변수에 값을 담고, 그 값에 SetArray의 매..
·강의 공부
퀘스트에서 Target이란? 퀘스트에서 Target이란 "모험 전투 5회 도전하기"에서 "모험 전투"가 Target이다.Target은 다양한 형태로 존재할 수 있으며 "슬라임 5마리 잡기" 에서 Target은 슬라임으로, 형태가 존재하므로 GameObject 자료형 또는 다른 class 자료형 일것이고,"강화 10번 하기" 에서 Target은 강화하기로, 강화는 형태가 존재하지 않으므로 string 자료형일것이다. Target 구현 TaskTarget 스크립트를 만들어준다.  ScriptableObject를 상속받아주고 추상화 클래스로 만들어준다.Target을 외부로 가져올 수 있는 추상 object 변수 Value를 읽기 전용 프로퍼티로 만들어주고, Target이 일치한지 확인해주는 bool형 추상 메..
·Unity
2학년 2학기 교내 엔진응용 수업시간에 배운 내용을 다루었습니다.    빈 게임 씬에 로우폴리 맵과 캐릭터 에셋을 넣고 빌드 후 실행해보았다.   맵 에셋과 이것저것을 넣고 실행하니 약 35메가정도 메모리가 늘어났다.로우폴리 에셋이라 이정도지 만약 용량이 큰 에셋이었으면 메모리를 훨씬 더 많이 차지하여 시작할 때 매우 느려질 수 있었다.  그렇다면 Hierachy에 직접 할당하지 않고 동적 할당을 했을 때의 메모리 상태는 어떨까? using UnityEngine;using UnityEngine.InputSystem;public class TestLoader : MonoBehaviour{ [SerializeField] private GameObject _levelArt; [SerializeFie..
·강의 공부
Task는 Quest에서 실제로 해야 하는 작업을 나타낸다. 위의 "모험 전투 5회 도전하기" 와 "제작소에서 장비 3회 강화하기" 퀘스트들을 예시로 설명하자면 첫번째 퀘스트 Target = 모험 전투 Category = -회 도전하기 두번째 퀘스트 Target = 제작소 Category = -회 강화하기 모두 무엇을, 몇회, 어떤 것을 하는지로 구성되어있다. 이것들은 모두 CountTask 이고 CountTask 외에 많이 쓰이는 SetTask도 있다. Task 생성과 필드 구성 Task 스크립트를 생성해주고, 스크립터블 오브젝트로 만든다. 코드 내에서 스크립트끼리 구별하게 할 수 있는 codeName을 선언해주고 퀘스트의 간단한 설명을 쓸 수 있는 description을 선언해준다. 퀘스트 시스템의 ..
·강의 공부
유니티 개인 프로젝트를 만드는 도중, 점점 프로젝트의 코드가 난잡해지고 재사용성이 떨어지는것 같아서 인프런에서 강좌를 찾아봤다. 그러던 중 모듈식으로 개발하는 퀘스트&업적 시스템 이라는 강의가 눈에 들어와 구매하게 되었다. 이 강의는 거의 모든 게임에 들어가는 퀘스트 시스템을 효율적으로 개발하는 방법과 퀘스트와 업적 시스템 개발하는 것을 기반으로 모듈식 프로그래밍을 배우는 강의였다. 내 상황에서 매우 필요한 강의였고 공부를 시작하게 되었다. 모듈식 프로그래밍 모듈식 개발은 클래스의 기능을 분리하여 마치 컴퓨터를 조립하듯 우리가 원하는 기능들을 조립해 객체를 완성시키는 것을 말한다. 모듈식 프로그래밍을 해야 하는 이유 모듈식으로 개발을 하면, 개별 클래스가 가벼워지고, 코드 간의 결합이 느슨해져 수정과 디..
입니다최원석
원석의 게임개발 블로그