좋은 글이니 읽어 볼 것.

http://geekcoders.tistory.com/entry/Unity-%EC%9C%A0%EB%8B%88%ED%8B%B0-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EA%B0%80-%EC%95%8C%EC%95%84%EC%95%BC-%ED%95%A0-%EC%BD%94%EB%93%9C%EC%9E%91%EC%84%B1%EB%B2%95

(출처 : GeekCoders 티스토리 블로그)



요약

1. 반복

for문으로 작성 가능한 경우 for.

아니라면 enumerator 사용. foreach는 사용을 최대한 줄이자.

1
2
3
4
var enumerator = dic.GetEnumerator();
while(enumerator.MoveNext()) {
    string str = enumerator.Current.Value;
}
cs

( List나 Dictionary 등)


2. Parse

int -> string은 입맛대로

string -> int는 tryParse를 쓰자

1
2
3
4
for(int i=0; i<Sample.LoopCount; i++) {
    int integer;
    int.TryParse(strs[i], out integer);
}
cs


3. callback

빈 delegate 작성하지말자.

소스코드의 안정성과 속도를 위해 무조건 null체크, null을 인자로 작성

1
2
3
4
5
6
void Func(Action callback) {
    if(callback == null) {
        return;
    }
    callback();
}
cs


4. transform Caching

transform에 자주 접근하는 객체는 caching이 필수.

1
2
3
4
Transform transform;
void Start() {
    transform = this.GetComponent<Transform>();
}
cs


5. string compare

결과 : == > GetHashCode > Equals > CompareTo > Compare

여러가지 경험을 비추어봤을때 연산자의 사용은 권장하지 않음. Equals를 추천

1
string.Equals(strs[i], Sample.CompareStr)
cs


6. debug.log

로그 삭제는 선택이 아닌 필수

에디터에서만 보이고싶다면 아래처럼 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#if UNITY_EDITOR
#define ENABLE_LOG
#endif
 
using UnityEngine;
 
public static Class Debug
{
    [System.Diagnostics.Conditional("ENABLE_LOG")]
    public static void Log(object message)
    {
        UnityEngine.Debug.Log(message);
    }
 
    [System.Diagnostics.Conditional("ENABLE_LOG")]
    public static void Log(object message, UnityEngine.Object context)
    {
        UnityEngine.Debug.Log(message, context);
    }
}
cs


Posted by misty_
,