GameForFun

블로그 이미지
by PforPepsi

TAG CLOUD

  • Total hit
  • Today hit
  • Yesterday hit

'목록들'에 해당되는 글 118건

  1. 2013.04.30
    [UNITY 3D] Eclipse 연동.
  2. 2013.04.29
    WWW관련 장애. 1
  3. 2013.04.25
    일부 함수의 오작동
  4. 2013.04.17
    OAuth 란..?
  5. 2013.03.17
    [Unity3d] Memory Leak 총 정리. 3
  6. 2013.03.15
    [Unity3d} Profiler의 Static Collider.Create, Move 등의 오류.
  7. 2013.03.11
    [Unity3d] Mesh Leaking 해결 방법 2
  8. 2013.03.11
    [Unity3d] Singleton 사용시 주의사항
  9. 2013.02.08
    한글 파싱...
  10. 2013.02.06
    [UNITY3d] EZGUI의 autosprite을 죽입시다.
AND

http://answers.unity3d.com/questions/212877/does-the-wwwisdone-function-actually-work.html


직면한 문제.. isDone을 써서 WWW가 로딩된 후 load하려니까 이놈이 다 안됬다면서 에러를 내뱉는다....WTF!?

언틋 들은 얘기로는 두 1f == 1f를 했을때 false가 나오는 현상이 있다고하는데.. 이러한 현상중 하나일까나..?

해결법은 완료됬다고 구라를 치는순간 yield로 1초를 더 기다려주고 get해보도록

AND

발견 사례.

네트워크 통신을 하던 도중, 해당 패킷을 분배해주는 곳 파트 전체가 스킵되는 경우가 발생함.

해결 --> 패킷 분배쪽을 try catch로 감싸서 실행.


특정 코드의 부분이 스킵되는 경우
1. http://stackoverflow.com/questions/9037314/release-mode-skipping-parts-of-code

2.http://stackoverflow.com/questions/4770240/c-code-gets-strangely-skipped-with-no-optimizations-any-ideas-why

'프로그래밍' 카테고리의 다른 글

안드로이드 보안  (0) 2013.05.03
Cryptography 와 NetworkStream 연동 문제.  (0) 2013.05.03
OAuth 란..?  (0) 2013.04.17
한글 파싱...  (0) 2013.02.08
C# Flag 사용하는 방법.  (1) 2013.02.01
AND

'프로그래밍' 카테고리의 다른 글

Cryptography 와 NetworkStream 연동 문제.  (0) 2013.05.03
일부 함수의 오작동  (0) 2013.04.25
한글 파싱...  (0) 2013.02.08
C# Flag 사용하는 방법.  (1) 2013.02.01
ttf 관련 문서  (0) 2013.01.29
AND

1. Static(전역) 에 의한 메모리 누수
- C#에서 흔히 Singleton을 사용하여, 아무곳에서나 접근가능한 클래스를 만드는 경우가 존재하는데 이때, 메모리 누수에 주의해야 한다. static이기 때문에 Scene이 넘어가도 해당 클래스는 누군가가 참조하기 때문에 GC(Garbagecollector)는 해당 메모리를 회수하지 않고 메모리에 지속적으로 올려놓는다..

따라서 static instance를 할당했다면 스크립트가 파괴되어야 할 시점, OnDestroy()에서 instance = null을해서 GC가 메모리를 해제할 수 있도록 해줘야 한다.

2. Mesh에 의한 메모리 누수
- Unity는 새롭게 생성된 Mesh를 해당 객체가 Destroy 된다고 해서 메쉬데이터를 지워주진 않는다. 따라서 해당 객체가 파괴될때  즉, OnDestroy()에서 메쉬 정보를 지워주면 된다. 

3. Asset에 의한 누수
- 이건 좀 특별한 경우인데, 다음 경우를 살펴보자.
Scene 1과 2가 있다 치고, Scene1에 처음으로 입장했을때, 메모리 사용량이 10MB였다면, Scene2를 갔다가 다시 Scene1로 넘어올때 메모리 사용량이 10MB보다 크게 나오는 경우가 존재한다.
이럴때 의심해 볼 수 있는것이 Scene2에 사용된 Asset이 메모리에 올라가 있다고 예상 해볼 수 있다. 
해결법은 Scene2에서 링크방식으로 지정된 Asset들을 모두 파괴시에 null로 만들어주면 된다. 
가령

class dada:monobehaviour {

 public Texture2D hellotexture;

void OnDestroy()
{
    hellotexture = null;
}

위와 같이 해주도록 하자.  AudioClip, Texture2D, Object, GameObject 모든것에 의심을 해볼 가치가 있다.

4.Material에 의한 누수
- 이 경우는 MAterial의 instance가 지속적으로 생길댸 발생하는 현상인데... 아직 해결법을 못찾고 있다.... Destory를 해줬는데도 증가하는것을 보면....(다른쪽에 남아있을지도?) 
혹시 모르니 해당 객체가 파괴될때 Destroy 를 해주도록 하자.


아래 코드는 Editor 하위 폴더에 넣어주면 Menu에 새로운 탭이 생겨서 사용할 수 있다.
기능은 현재 Scene에서 로드된 모든 오브젝트들을 보는 것이다.

3번에서 설명했던것과 같이 Scene2에서 1으로 넘어올때 어떤것들이 해제 안됬나를 보려면, 먼저 Scene1에서 사용후, Scene2를 방문했다가 다시 Scene1에 와서 사용해주면, 새롭게 추가된 Object들의 이름이 Console창에 뜬다.

 static DIctionary<string, int> tempdicts = new Dictionary<string,int>();
[MenuItem("MemoryDetector/Print Item Names")]
publicstatic void PrintObjectName()
{
    Dictionary<string, int> tempdicts = new Dictionary<string, int>();
    foreach(string s in Objects.Keys)
    {
        if(Objects.ContainKeys(g.name)))
        {
            Objects[g.name]++;
        }else
        {
            Objects.Add(g.name,0);
        }

    }
    foreach(string curobjects in Objects,Keys)
    {
        if(!tempdicts.ContainKey(curobjects))
        {
            Debug.Log(curobjects);
        }
    }

AND

http://answers.unity3d.com/questions/11324/move-gameobject-with-collider-without-rigidbody-co.html?sort=oldest

이유는 Rigidbody를 안붙인 콜라이더들은 모두 Static으로 간주하여, 물체가 이동되는 순간, 물체의 위치에 따른 충돌 정보를 재생성하기 때문에 생기는 현상이다. 따라서 collider를 움직이고 싶으면 rigidbody를 붙이고, kinematic을 켜서 움직이도록 하자.


'[Unity3D]' 카테고리의 다른 글

WWW관련 장애.  (1) 2013.04.29
[Unity3d] Memory Leak 총 정리.  (3) 2013.03.17
[Unity3d] Mesh Leaking 해결 방법  (2) 2013.03.11
[Unity3d] Singleton 사용시 주의사항  (0) 2013.03.11
[UNITY3d] EZGUI의 autosprite을 죽입시다.  (0) 2013.02.06
AND

충격적인 소식...

Unity는 게임오브젝트를 Destroy한다고 해서 해당 게임 오브젝트가 사용했던 메시 데이터를 지우지 않는답니다..

따라서 직적 FindObjectstypeof 를 사용하여 지워줘야된다고 합니다.. ㅡ.ㅡ;;


http://answers.unity3d.com/questions/9999/procedural-mesh-leaks-memory-everytime-the-game-ob.html

AND

전역변수로 class의 reference를 가지고 있으면, Scene이 바뀐다 한들, reference는 가지고 가기 때문에, 기존에 얽여있는 texture, prefab등이 모두 그대로 다음 Scene으로 넘어간다..

따라서 Scene이 바뀌거나, 파괴될때  instance = null을 해주도록 하자.

AND

한글은 조합형, 완셩형, 확장 완성형이 있는데....

c#에서 euc-kr을 사용했더니... 케잌,  케잌설명  이 제데로 파싱이 안된다... 

그래서 ks_c_5601-1987(확장 완성형) 으로 바꿔줘서 해결


http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=0&detail=1&pageno=0&wid=1294&rssMode=1&wtype=0

'프로그래밍' 카테고리의 다른 글

일부 함수의 오작동  (0) 2013.04.25
OAuth 란..?  (0) 2013.04.17
C# Flag 사용하는 방법.  (1) 2013.02.01
ttf 관련 문서  (0) 2013.01.29
Google Expansion File 설명.  (2) 2013.01.18
AND

ezgui는 일반적인 uv를 쓰지 않기때문에( (1,1), ~ (2,2) 망할놈들..) 이미지를 clamp로 해놓으면 표현이 안됩니다. 따라서 이미지는 repeat형태로 놔둬야 잘 표현이 됩니다.

샹..

'[Unity3D]' 카테고리의 다른 글

[Unity3d] Mesh Leaking 해결 방법  (2) 2013.03.11
[Unity3d] Singleton 사용시 주의사항  (0) 2013.03.11
[Unity3d] ezgui -한글  (0) 2013.02.01
[Unity3d] Animation Sampling.  (0) 2013.01.31
[Unity3d] FOV  (0) 2013.01.30
AND

ARTICLE CATEGORY

목록들 (118)
[Unity3D] (39)
그래픽관련 (13)
잉여잉여 (25)
프로그래밍 (27)
노래♬ (3)
Game_Design(기획) (3)

RECENT ARTICLE

RECENT COMMENT

RECENT TRACKBACK

CALENDAR

«   2024/05   »
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

ARCHIVE