2015년 10월 11일 일요일

자막 smi <-> srt 변환하는 유틸리티

영상을 인코딩하다 보면 자막이 smi이 필요할때도 있고 srt가 필요할때도 있는데요, 서로 변환시키는 프로그램은 손쉽게 구할수 있는데 문제는 한글 자막의 경우, euc-kr과 utf-8을 혼용해서 사용하는 경우가 많아서 변환한 후에 보면 글자가 모두 깨져보이게 되는 문제가 있다는 거죠. 잠깐 간단하게 설명하자면... 한글을 표현하는 방식에는 조합형과 완성형 방식이 있는데, 조합형(utf-8) - 자음과 모음을 초성, 중성, 종성으로...

2014년 1월 28일 화요일

unity3D, 다른 방법으로 저장하기

유니티 오브젝트로 저장하는 방법이 있는데요. 이 방법은 생각보다 많이 까다로울 수 있기때문에 오브젝트가 갖는 값을 유추해 볼 수 있는 클래스를 새로 생성한 후 이 클래스의 값을 저장하는 방법을 사용합니다.  예를 들어, RPC 호출을 통해서 여러개의 AnimationStates를 전달하고자 할때, AnimationStates를 대신할 수 있는 클래스를 만들고 이 값을 전달하는 것이죠. 아래의 예제는 어떤 클래스라도 문자열로 변환할...

unity3D, 좀 더 복잡한 데이터 저장하기

이전 포스팅에서 간단한 데이터를 저장하는 법을 봤는데요, 만약에 저장할 데이터가 간단하지 않고 좀 복잡하다...라고 한다면 아래처럼 테이블을 만들어서 저장합니다. ============================================================================== using UnityEngine; using System.Collections; using System.Collections.Generic;...

unity3D, 데이터 저장하기

게임을 개발하다 보면 유저가 어디까지 진행했는지, 유저의 캐릭터가 얼만큼 성장했는지 등등을 저장해야 하는 시점이 오게 됩니다.  가장 기본적으로 저장하는 방법은 PlayerPrefs을 사용해서 저장하는 방법이 있습니다.  이것은 기본 데이터를 문자열키를 이용해서 같이 저장하게 해주는것인데요, 저장할 데이터가 작고 간단하다면 이 방법을 사용하는것이 가장 무난하고 좋습니다. 사용법은 아래의 코드를 살펴보세요. using UnityEngine; using...

2014년 1월 27일 월요일

C# 메모리 관리 기법 - WeakReference와 IDisposable

상식적으로 가비지 컬렉터가 작동된다면 메모리가 늘어나는 것에 대한 걱정은 없어야 하겠지만 실제로는 메모리가 늘어나기도 합니다.  C#에서는 메모리 해제 명령이 없어서 메모리 릭이 발생하게 되면 당황스러울 수 밖에 없죠. 그러면 어떤 경우에 메모리가 늘어나게 될까요? 가비지는 더 이상 참조가 없는 메모리를 뜻합니다.  메모리가 어디선가 늘어나고 있다는 뜻은 결국 어디선가 의도하지 않은 참조가 일어나고 있어서 가비지화 되지 못하고 계속 누적되고 있다는 말이 되겠죠. 어떤 경우에 그런 일이 발생할까요? 이렇게 캐릭터 매니져가 세개의 캐릭터를 만들었습니다.  그리고 캐릭터의 위치를 보여주는 객체가 캐릭터 매니저에 접근해서 캐릭터를 모두 참조하게 됩니다.  그 후에 필요 없어진 캐릭터를 캐릭터 매니저가 삭제하게 됩니다.  그러면 가비지가 될것이라 생각하겠지만 여전히 지워진 캐릭터를...