본문 바로가기

Unity(C#)

(15)
Unity 오브젝트풀 오브젝트 풀 유니티에서 객체를 생성하고 삭제하는 건 상당히 많은 자원을 소모한다. 만약 슈팅게임을 만들때 총알을 백만 개 소환하고 삭제한다면 게임의 렉이 발생할 것이다. (가비지 컬렉션이 문제가 된다) 이런 것을 방지하는 게 오브젝트 풀이다. 오브젝트 풀 은 사냥할 오브젝트들을 계속 생성해주는 게 아닌 사용할 만큼 미리 만들어준 다음에 필요할 때는 만들어둔 것을 가져와서 사용하고 다 사용한 오브젝트는 다시 반환해주는 방법이 다.. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55..
Unity 오브젝트를 다른오브젝트 하위로 생성하기 오브젝트를 생성할때 하이어라키 상단에 생성되는게아닌 다른 오브젝트 하위에 생성하는방법이다. GameObject temp = Instantiate(prefab, this.transform.position, Quaternion.identity); temp.transform.parent = this.transform; 오브젝를 만들때 temp라는 변수에 해당 오브젝트를 담아준다음에 해당 오브젝트를 다른 오브젝트에 parent에 넣어주면 된다. 단 UI를 생성해서 넣어줄때는 Parent of RectTransform is being set with parent property. Consider using the SetParent method instead, with the worldPositionStays ar..
Unity(C#) int,double,float의 Null값 삽입하기 원래라면 int, double, bool과 같은 Value Type은 Null값을 가질수 없다. 하지만 변수에 Null을 꼭 넣어야하는 상황에서는 C#식 표현인 int?를 사용하여 Null값을 삽입할수있다. 1 2 3 4 int? temp = null; if(temp == null) temp= 10;
Unity(C#) Dictionary Dictionary key,value를 이용하여 자료를 저장한다. Dictionary를 이용하면 자료를 편하게 찾을수있다. 선언시 사용한 타입을 미리 정의하기 때문에 박싱언박싱이 이러나지않는다. 라는 장점이 존재한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class DictionaryTest : MonoBehaviour { Dictionary name = new Dictionary(); void Start() { name.Add("슬깃", 1); name.Add("철수", 2); name.Add("영희", 3); Debug.Log("슬깃 : " + name["슬깃"]); Debug.Log("철수 : " + name["철수"]); Debug.Log("영희 : " + ..
Unity(C#) 람다식 람다식 람다식은 무명 메서드와 비슷하게 무명 함수를 표현하는데 사용된다. 1 2 3 4 5 6 7 8 9 10 11 12 delegate int myDelegate(int value); public class LambdaExpression : MonoBehaviour { myDelegate tempGate; void Start() { tempGate = delegate (int value) { return value + 10; }; Debug.Log(tempGate(10)); } } cs 위의 코드는 무명메서드의 예제 코드이다. 람다식은 해당 무명 메서드를 더욱 쉽게 만들어 준다. 1 2 3 4 5 6 7 8 9 10 11 12 delegate int myDelegate(int value_0, int v..
Uniyt(C#) 조건부 연산자 ?: ?: 3개로 구성된 조건부 연산자라고도 하는 조건부 연산자 ?:은 부울 식을 계산하고 부울 식이 true 또는 false으로 계산되는지에 따라 두 식 중 하나의 계산 결과를 반환합니다. 변수 = 조건부 ? trut : false; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public class 조건부 연산자 : MonoBehaviour { int a = 10; int b = 20; void Start() { // 일반 비교방식 if(a b) Debug.Log("a가 b보다 크다."); // ?: 비교방식 string sng = a
Unity(C#) 접근한정자 C#의 접근한정자는 총4가지 존재한다. public, private, protected, internal public은 어디서든 접근이 가능하다. private은 자기자신말고는 접근이 불가능하다. protected은 자기자신과 자기를 상속하는 클래스들만 접근이 가능하다. internal은 자신이 혹한 어셈블리 에서만 접근이 가능하다. protected internal은 어셈블리 내의 상속 클래스에서만 접근이 가능하다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 namespace Test_0 { public class Test : MonoBehaviour { public int a; private int b; protected int c; } } nam..
Unity(C#) Tuple Tuple 원래 메서드에서는 하나의 값만 리턴이 가능하지만 Tuple을 이용하면 메서드에서 여러개의 리턴값을 줄수있다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public class Tuple : MonoBehaviour { void Start() { var temp = TupleTest("슬깃", 20); Debug.Log("이름 : " + temp.name); Debug.Log("나이 : " + temp.age); } (string name, int age) TupleTest(string name, int age) { return (name, age); } } cs 이런식으로 구현하게되면 이름,나이를 반환하는 메서드를 2개 만들필요없이 하나의 매서드로 처리할수있는 장점이 ..