분류 전체보기

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 3-2

# 정상 속도 만들기지난 코드에서 CPU 성능에 따라 Update문을 도는 횟수가 다르기에각자 다른 속도로 움직이는 문제가 있었다이를 해결하기 위해서는 Time.deltaTime을 사용하면 된다public class PlayerContorller : MonoBehaviour{ public float speed = 10.0f; void Start() { } void Update() { if (Input.GetKey(KeyCode.W) transform.position += new Vector3(0.0f, 0.0f, 1.0f) * Time.deltaTime * speed; if (Input.GetKey(KeyCode.S) t..

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 3-1

# 유니티 클래스 주석 없이 생성되도록 하는 방법public class Test : MonoBehaviour{ // Start us called before the first frame update void Start() { } // Update is called once per frame void Update() { }}유니티에서 C# 클래스를 생성하면 항상 위 코드처럼 주석이 생성된다이를 없애고 싶다면 아래와 같은 설정을 하면 된다 유니티가 설치된 폴더에 들어가서"Program Files/Unity/Hub/Editor/버전/Editor/Data/Resources/ScriptTemplates"로 들어간다그리고 81번 파일을 복사해서 외부에서 주석 제..

C#/[루키스] 실전 문법

[C# 섹션 8] Property

# property 개념 및 사용법property는 멤버 변수의 get, set 함수를 직접 만드는 과정을편하게 해주는 기능으로 사용법은 아래와 같다protected int hp; // 변수public int Hp // getter, setter{ get { return hp; } set { this.hp = value }} get set 중에서 둘 중 하나만 작성해서 하나를 막을 수도 있고private을 붙여 외부에서만 사용제한도 가능하다 # 자동 구현 property멤버 변수의 get, set 함수 내부에서기본 기능(단순히 get, set)만 하는 경우에는아래와 같이 자동 구현 propety를 활용하면 된다public int Hp { get; set; } // 변수 생성 자동 + getter, se..

C#/[루키스] 실전 문법

[C# 섹션 8] Interface

# abstract 필요 예시C++에서 추상클래스를 사용해야 하는 예시와 동일하다 C#에서 부모 클래스를 상속받은 자식 클래스에서부모 클래스의 virtual 함수를override를 하지 않거나 (부모 클래스 함수를 그대로 사용하고 싶은 경우)override 하여 사용하는 것이 일반적이다 (부모 클래스 함수와는 다른 구현부의 함수를 사용하고 싶은 경우)하지만 만약,부모 클래스는 함수의 "이름"만 정의하고,구현은 자식 클래스에서만 가능하도록 강제하고 싶다면abstract 키워드를 사용하면 된다 abstract 키워드가 함수에 붙으면,해당 함수는 추상함수가 되고해당 함수가 포함된 클래스 전체가 추상클래스가 돼버린다따라서,부모 클래스는 해당 함수의 구현(내용)을 가질 수 없으며,자식 클래스는 반드시 overri..

카테고리 없음

[C# 섹션 8] Generic

# 왜 필요한가?동일한 로직의 함수이지만, 매개변수 타입이 다른 경우같은 함수를 여러 버전으로 만들어야 하는 불편함이 있다public void PrintInt(int value){ Console.WriteLine(value);}public void PrintFloat(float value){ Console.WriteLine(value);}public void PrintString(string value){ Console.WriteLine(value);} 이를 해결하는 방법은 Object 혹은 Generic을 활용하는 방법이 있다public void PrintObject(object value){ Console.WriteLine(value);}public void Print(T val..

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 2-3

# 매니저 클래스클래스는 컴포넌트 클래스와 매니저 클래스로 구분된다그런데 매니저 클래스는 아래의 코드에서처럼new로 생성이 안 되는 문제가 발생한다public class Managers : MonoBehaviour{ void Start() { } void Update() { }}public class Test : MonoBehaviour{ void Start() { Managers mg = new Managers(); } void Update() { }} 그 이유는 MonoBehaviour 상속받은 클래스는new로 객체 생성이 불가하기 때문이다MonoBehaviour의 상속 구조는 아래와 같다"MonoBehaviou..

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 2-2

# Component 패턴- Component 패턴의 개념모든 코드들을 부품화해서 관리를 하는 방식을 의미한다언리얼은 상속과 Component가 어느정도 혼합되어있지만유니티는 거의 Component로만 구성되어있다 - Component 패턴의 예시public void Update(int deltaTick){ // 이동 로직 // 애니메이션 로직 // 스킬 로직 // 물리 로직}위와 같은 일반적인 방식을 Component 패턴를 통해아래와 같이 구성할 수 있다AnimationComponent _move = new AnimationComponent();SkillComponent _skill = new SkillComponent();PhysicsComponent _phys..

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 2-1

# 에디터 입문 (단축키)마우스 우클릭 누른 상태 + 마우스 이동: 카메라 상하좌우마우스 우클릭 누른 상태 + wasd: 카메라 이동마우스 우클릭 누른 상태 + q or e: y축 고정 카메라 상하이동마우스 우클릭 누른 상태 + 마우스 휠: 카메라 이동속도 설정마우스 휠: 카메라 줌인 줌아웃 (딱딱)alt + 마우스 우클릭 누른 상태: 카메라 줌인 줌아웃 (소프트)alt + 마우스 좌클릭 누른 상태: 카메라 상하좌우 (중심을 기점으로)게임오브젝트 클릭한 뒤 q w(transform) e(rotation) r(scale) 확인 및 조절ctrl + shift + f: 선택한 오브젝트의 위치와 각도를 씬창에 위치한 우리의 카메라와 동기화 # Play ctrl + p: 플레이(게임 시작)주의점은 플레이 상태에서..

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 1

해당 카테고리의 글들은 루키스 강사님의 "[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진" 강의를 수강하며정리한 개인 노트입니다일부 핵심적인 내용에만 거의 초점을 맞추어 메모형식으로 작성하였습니다그렇기에 해당 글을 통해 유니티 엔진에 대한 입문 지식을 얻는 것은 비추천하며강의를 참고해 주시길 부탁드립니다https://www.inflearn.com/course/mmorpg-%EC%9C%A0%EB%8B%88%ED%8B%B0 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진 강의 | Rookiss - 인프런Rookiss | , MMORPG 개발에 필요한 모든 기술, C# + Unity로 Step By Step! 🕹️ [사진] 기초부터 끝판왕까..

C#/[루키스] 자료구조

[C# 섹션 5] Dictionary

# Dictionary- C#의 Dictionary와 HashSetC#의 Dictionary는 C++의 unordered_map과 거의 같다C#의 HashSet은 C++의 unordered_set과 거의 같다 - 주의점두 언어 모두 임의접근을 하는 경우 주의할 필요가 있다C#의 Dictionary[key]는 키가 없으면 예외가 발생한다반면, C++의 unordered_map[key]는 키가 없으면 기본 값을 생성하여 추가된다// C#Dictionary dict = new Dictionary();var value = dict[1]; // KeyNotFoundException 발생// C++unordered_map dict;auto value = dict[1]; // 새로운 키 1이 생성되고, 값은 기본값(..