전체 글 47

Inspector

untiy에서 Inspector는 GameObject의 컴포넌트들을 모아놓은 집합체로 이를 추가, 제어 등을 하는 것으로 unity를 통한 게임이 동작되는 것이라고 이해하면 된다. Chaser라는 GameObject를 추가하고여기에 Chaser라는 스크립트를 추가하여 동작을 시켜볼려고 한다.               이 컴포넌트들중 Transform은 벡터(Vector) 를 활용하여 Position(위치), Rotation(회전),Scale(크기)를 제어할 수 있고Script를 추가하여 이 여러 컴포넌트들을 제어 할 수 있다 //chaser.csusing UnityEngine;public class Chaser : MonoBehaviour //UnityEngine.MonoBehaviour{ //pr..

Unity 2024.09.12

MonoBehaviour

유니티에서는 C# scripts를 유니티에서 사용하기 편하도록 자동생성을 할 수 있다. 자동 생성 되는 스크립트에는 MonoBehaviour 라는 클래스를 상속 받는데네임 스페이스(using UnityEngine)를 보면 알겠지만 해당 클래스는 UnityEngine 내에 존재하는 클래스이다. 그렇다고해서 유니티에서 사용되는 모든 클래스에 MonoBehaviour 를 상속 받을 필요는 없다여러 기능들을 모아둔 Utility Class, Helper 같은 역할을 하는 클래스의 경우엔 이를 꼭 쓸 필요는 없는 것이다MonoBehaviour 를 상속받는 가장 큰 이유는이 인스펙터를 활용하기 위해서 라고 보면 된다. 인스펙터에 있는 모든 컴포넌트들은 다 코드에서 동작하는 기능들을(클래스 혹은 구조체) 시각적으로 ..

Unity 2024.09.12

상속(2) - 결합도(Coupling)와 응집도(Cohesion)

결합도(Coupling)클래스 간에 얼마나 강력하게 연결되어 있는지, 얼마나 의존적인지를 나타내는 정도이다낮은 결합도와 높은 결합도로 나뉘어지며결합도는 낮을 수록 좋은 형태를 띄며인터페이스로 전달되는 파라메터를 통해서만 상호작용이 일어나는 경우를결합도가 제일 낮고 제일 좋은 형태 라고 볼 수 있다. 응집도(Cohesion)클래스나 모듈 내부의 관련성이나 일관성의 정도를 나타낸다응집도가 높으면 클래스의 기능이 잘 모여 있고, 응집도가 낮으면 기능이 분산되어 있다.높은 응집도는 클래스나 모듈이 자신의 기능을 명확하게 하고 있다는 것을 의미한다.//IElement.csinterface IElement{ void Use();}//ElementFire.csclass ElementFire : IElement{..

벡터(Vector)

유니티는 게임의 모든 요소를 Game Object(게임 오브젝트)라는 것으로 표현한다.캐릭터, 적, 아이템, 장애물, 배경 등 플레이어와 상호작용을 하는 것이든 아니든 모두 오브젝트로 구현한다. 게임 오브젝트에는 이런 Transform이라는 컴포넌트가 포함되어 있는데Transform에는 Position(위치), Rotation(회전), Scale(크기)에 관한 Vector(벡터)형식의 값을 저장하고 있다. 벡터란 우리가 고등학교 수학 시간때 배웠던 그 벡터가 맞다(문과 : ㅔ..??)벡터는 Magnitude(크기)와 Direction(방향)을 표현하는 값이다.백터는 원점(0,0)에서 해당 위치 값인 좌표 값까지의 선을 연결해서 그 크기와 방향을 표현 할 수 있다.원점(0,0)을 기준으로 놓여진 벡터 A와..

Unity 2024.09.10

함수포인터와 델리게이트

c와 c++에는 함수포인터 라는 기능이 있다#include//함수포인터는 반환형과 매개변수로 정의됨void PrintHello(){ printf("Hello\n");}void PrintWorld(){ printf("World!\n");}int Sum(int _lhs, int _rhs){ return _lhs + _rhs;}int Sub(int _lhs, int _rhs){ return _lhs - _rhs;}void main(){ //함수포인터(Function Pointer) void (*pFunc)() = PrintHello; //반환형이 void고 매개변수가 없는 함수는 아무거나 들어 올 수 있다. pFunc(); pFunc = PrintWorld; pFunc(); int (*pCalc)(int, i..

Overloading 과 Overriding 그리고 다형성(Polymorphism)

오버로딩과 오버라이딩은 그 개념은 완전 다르지만영어를 잘 모르는(......) 한국인들은 헛갈릴 수가 있기에면접에서 자주 물어보는 질문중 하나 라고 한다. 여기 3개의 클래스가 있다.//Base.csclass Base{ public void Foo() { Console.WriteLine("Base Foo Call!"); }} //Derived.csclass Derived : Base //Base클래스를 상속 받음{ public void Foo() { //부모의 기능을 가지면서도 기능을 확장하려면 base를 활용하자, base는 부모 매소드를 지정한다. //base.Foo(); Console.WriteLine("Derived Foo Call!")..

상속(Inheritance)

상속(Inheritance)이란객체 지향 프로그래밍에서 가장 중요한 개념이다.클래스는 기능들을 묶어놓은 모듈이라고 했다.그리고 이 클래스를 이용해 생산성을 높이는 것이 객체 지향 프로그래밍 인데클래스에 기능을 추가 해야하는데 이 추가된 기능이 한정된 상황에서 필요 할 경우클래스에 기능을 추가하는 것은 생산성을 떨어뜨리는 일이 된다. 그런 상황에 대처하기 위해 나오게 된 것이 바로 상속 이다상속은 하나의 클래스(자식)가 하나의 클래스(부모)의 기능을 모두 이어 받은 뒤별도로 그 자식이 해야 할 일을 추가해주는 것 이라고 생각하면 된다.자식 A와 자식 B는 별도의 존재이지만자식 A가 할 수 있는 일이 있고 자식 B가 할 수 있는 일이 있다.부모가 자식A와 B가 하는 일을 모두 다 할 수 있어서 이를 상속 받..

생성자(Consturctor)와 소멸자(Destructor)

C#에서는 메모리를 우리가 직접 관리 할 수 없다( Garbage Collection ) 그렇기에 효율적인 프로그램을 위해서 개발자에게는 객체라는 것에 대한 올바른 이해와 사용이 필수적인데객체의 생성주기(LifeCycle)에는 생성자와 소멸자라는 필수적인 두 기능이 있다.이를 이해하고 있으면 메모리 관리를 효과적으로 할 수 있을 것 이다. 생성자 및 소멸자는반환형이 없고 이름은 클래스명과 같다. 이런 형태로 임의로 호출을 안하는 것이 기본(default)이다.(자동 호출됨)하지만 공부를 위해 지금은 호출한다.//Character.csclass Character{ //생성자(Constructor) public Character() { Console.WriteLine("Chara..

객체 지향 프로그래밍(Object Oriented Programming)

OOP(Object Oriented Programming) 라고 불린다 프로그래밍엔절차 지향과 객체 지향 두가지로 나뉘어 지는데 절차 지향 프로그래밍은 컴퓨터의 관점에서 생각하고 데이터를 처리하도록 짜여져 실행 속도가 빠르다는 점이 있으며대표적으로 C가 해당되고 객체 지향 프로그래밍은 정보와 기능을 하나로 묶어서 생각하게 된다기능별로 묶어 모듈화를 시킴으로서 같은 기능을 중복으로 연산하지 않으며모듈을 재활용하기에 데이터처리량을 줄였고 C#, Java등이 이에 해당된다. 객체 지향에는 몇가지 특징이 있는데캡슐화 (Encapsulation) 가 그중 핵심이다객체를 캡슐로 만들어서 그 내부를 보호하고 볼 수 없게 한다(은닉)실제로 캡슐에 든 약을 보면 우리가 그 약의 안이 어떻게 되어있는지 어떠한 성분을 가졌..

Garbage Collection(가비지 컬렉션)

C#의 데이터 타입에는 크게 두가지가 있다 Value Type : int float 같은 타입 Reference(참조) Type : 모든 클래스는 참조 타입 -> class는 복사를 하면 얕은 복사가 된다. 참조는 0바이트 : 해당 주소를 부르는 이름이 변수인데 포인터는 이 주소를 저장하는 곳이라 8바이트의 크기를 가지지만, 참조는 해당 주소를 부르는 이름(변수)가 하나가 더 추가 되는 개념이다. 이를 기억해두고 있어야 한다. C#은C나 C++과 다르게 동적할당 된 데이터를 개발자가 임의로 메모리 해제를 하는 것이 불가능하다.대신 이를 해결해주기위해 나온 것이 바로 가비지 컬렉션(Garbage Collection)이다. 가비지 컬렉션은 자동으로 메모리를 관리해주는 편리한 기능을 가지고 있다.따라서 개발자..