< Programming >/C#

interface 사용하기

Interface는 어떻게 사용할까? 1234567891011121314151617using UnityEngine; void OnTriggerEnter(Collider other){ Potion manaPotion = other.GetComponent(); if(manaPosion != null) { manaPosion.Use(); } Scroll townScroll= other.GetComponent(); if(townScroll!= null) { townScroll.Use(); }} Colored by Color Scriptercs 위 코드는 충돌한 상대방 컴포넌트를 가능한 한 모든 아이템 타입으로 검사하는데,충돌한 상대방의 컴포넌트가 Posion인지 Scroll인지 모르기 때문이다.게임에는 수십 혹..

2020.02.03 게시됨

< Programming >/C#

박싱 언박싱

C# 자료구조인 컬렉션에 있는 ArrayList, queue, stack, dequeue, Hashtable 은 공통적으로 모든 자료형 즉, 최상위 자료형인 gameObject 까지 담을 수 있는데, 이 과정에서 제네릭(C++에서의 템플릿과 비슷)을 사용하는게 아니라면 박싱,언박싱을 하게된다. 예를 들어 int형 데이터를 저장할 때 자연스럽게 박싱을 거쳐 gameObject형 데이터로써 저장되는 것이다.다시 꺼내올 때에는 언박싱을 거쳐 int형으로 반환이 된다. 잠깐 이때 주의할 점으로는, int형이 아닌 타입의 데이터로 불러오려는 행위는 InvalidCastException 오류를 발생시킨다. (is 연산자 사용을 통한 타입확인) 이러한 일련의 과정은 성능저하를 발생시킨다. 이상으로 박싱언박싱과, 그에..

2020.01.07 게시됨

< Programming >/C#

유니티 스크립트 정리 (3일차)

추적할 대상을 따라가는 로직 ( 플레이어를 따라가는 카메라 )플레이어의 이동로직은 해당 스크립트의 update 함수에 있기에, 카메라의 추적하는 로직은 해당 스크립트의 LateUpadate() 함수에서 해준다.이는 스크립트의 실행 우선순위( Execution Order )를 지정하지 않는 한 어느 스크립트에 있는 Update함수가 먼저 실행될지 불확실 하기 때문이다. 불규칙한 난수를 발생시키는데 사용하는 함수 insideSpeher -> 반경이 1인 구체 내부의 3차원 좌푯값(Vector3)을 불규칙하게 반환한다.Perlin Noise -> 0과1사이의 난수를 발생시키지만 일반 난수 발생기와는 다르게 연속성이 있는 난수를 발생시키는 것으로 무작위한 terrain또는 텍스처,구름 등을 생성할 때 유용하게 ..

2019.12.19 게시됨

< Programming >/C#

유니티 스크립트 정리 (2일차)

readonly (리드온리) 또는 const (전역) 형으로 선언함으로써 런타임에 변숫값을 변경할 필요가 없는 변수의 경우에 사용한다. -> 가비지 컬렉터에 쌓이지 않도록 하기 위함이다. Player 를 쳐다보는 Enemy의 각도를 구하는 방법 -> Quaternion rot = Quaternion.LookRotation(playerTransform.position -enemyTransform.position);해당 각도까지 점진적인 회전-> enemyTransform.rotation = Quaternion.Slerp(enemyTransform.rotation, rot, Time.deltaTime * damping);ps. damping = 회전속도 위 내용을 정리하자면, 두 벡터의 밸셈은 방향 벡터를 ..

2019.12.18 게시됨

< Programming >/C#

유니티 스크립트 정리

[시리얼라이즈드필드] //인스펙터 창에서 보여줌 priavte int speed = 10; Vec = new Vector3() {0,0,0}; (x,y,z 를 갖고있는 구조체) 벡터 메소드 목록forward 0,0,1right 1,0,0up 0,1,0zero 0,0,0one 1,1,1... //키보드 이동(1)if(Input.GetKey(KeyCode.RightArrow)){transform.....} //키보드 이동(2)//조이스틱 등의 키입력도 모두 하기 위해 float h = Input.GetAxis("Horizontal"); //소수점까지 나온다int v = Input.GetAxisRaw("Vertical"); //정수로 나온다 h = h * speed * Time.deltaTime;-> tran..

2019.12.17 게시됨