유니티(Unity3D)의 Monodevelop 는 VisualStudio(VS) 에 비하면 꽤 불편한다.
익숙한 VS 로 유니티 개발을 하기위해선 Visual Studio Tools for Unity 을 사용하면 된다.
VS 버전에 맞게 다운로드 받아 설치하자.
(MS 가 SyntaxTree 를 인수하면서 무료로 제공된다.)
http://unityvs.com/
이제 유니티를 실행(또는 재실행)하여
Assets메뉴 -> Import Package -> Visual Studio 2012 Tools 로 임포트한다.
이제 유니티에서 Visual Studio Tools 메뉴가 생겼다.
Visual Studio Tools -> Open in Visual Studio 로 사용할 수 있다.
(콘솔 메시지를 더블클릭해도 VS 로 처리된다.)
Unity3D External Script Editor 로 VS2012 사용하기 안될때
Unity3D 에서 외부 스크립트 에디터로 VS2012 를 설정하였는데
monodevelop 이 실행되는 경우 다음과 같은 .bat 파일을 만들어 해결한다.
@rem .cpp .cs 등 파일들은 vs2012 로 열리도록 파일 연결이 되어 있어야 한다.
@rem Unity3D 에서 .cs 등 클릭하면 첫번째 인자(%1) .cs 파일을 vs2012 로 실행하게 된다.
start "title" %1
만든 .bat 파일을
Unity3D -> Edit -> Preference -> External Tools -> External Script Editor -> Browse...
에서 설정한다.
monodevelop 이 실행되는 경우 다음과 같은 .bat 파일을 만들어 해결한다.
@rem .cpp .cs 등 파일들은 vs2012 로 열리도록 파일 연결이 되어 있어야 한다.
@rem Unity3D 에서 .cs 등 클릭하면 첫번째 인자(%1) .cs 파일을 vs2012 로 실행하게 된다.
start "title" %1
만든 .bat 파일을
Unity3D -> Edit -> Preference -> External Tools -> External Script Editor -> Browse...
에서 설정한다.
Unity3D 자동 스크롤하기
Vector2 m_ScrollPosition;
// 한줄씩 새로운 메시자를 추가하기
public void AddLogMessage(string msg)
{
m_LogMsg += msg + "\n";
// 자동으로 맨 밑으로 스크롤
m_ScrollPosition.y = Mathf.Infinity;
}
// 화면 갱신 이벤트가 발생될때마다 호출
void OnGUI()
{
// 버튼(m_Rt) 위치 아래 화면에 스크롤 영역을 생성
Rect rtArea = new Rect(0, (int)(m_Rt.yMax) + 5, Screen.width, Screen.height - (int)(m_Rt.yMax) - 5);
GUILayout.BeginArea(rtArea);
m_ScrollPosition = GUILayout.BeginScrollView(m_ScrollPosition, GUILayout.Width(Screen.width), GUILayout.Height(Screen.height - (int)(m_Rt.yMax) - 5));
// 메시지가 추가
GUILayout.Label(m_LogMsg);
// OnGUI 에서 사용하면 스크롤바를 움직일 수 없다
// m_ScrollPosition.y = Mathf.Infinity;
GUILayout.EndScrollView();
GUILayout.EndArea();
... 중략 ...
}
// 한줄씩 새로운 메시자를 추가하기
public void AddLogMessage(string msg)
{
m_LogMsg += msg + "\n";
// 자동으로 맨 밑으로 스크롤
m_ScrollPosition.y = Mathf.Infinity;
}
// 화면 갱신 이벤트가 발생될때마다 호출
void OnGUI()
{
// 버튼(m_Rt) 위치 아래 화면에 스크롤 영역을 생성
Rect rtArea = new Rect(0, (int)(m_Rt.yMax) + 5, Screen.width, Screen.height - (int)(m_Rt.yMax) - 5);
GUILayout.BeginArea(rtArea);
m_ScrollPosition = GUILayout.BeginScrollView(m_ScrollPosition, GUILayout.Width(Screen.width), GUILayout.Height(Screen.height - (int)(m_Rt.yMax) - 5));
// 메시지가 추가
GUILayout.Label(m_LogMsg);
// OnGUI 에서 사용하면 스크롤바를 움직일 수 없다
// m_ScrollPosition.y = Mathf.Infinity;
GUILayout.EndScrollView();
GUILayout.EndArea();
... 중략 ...
}
Unity3D Standalone 환경에서의 ArgumentException: Encoding name 'euc-kr' not supported 오류 해결방법
[문제]
Unity 에서 C# System.Text.Encoding.GetEncoding("euc-kr") 으로 한글 인코딩을 사용하였을 경우
Unity Editor 상에서 플레이하면 잘 작동하지만 Emulator 나 Device 의 standalone 환경에서는
다음과 같은 오류가 발생한다.(Eclipse Logcat 으로 확인)
INFO/Unity(499): ArgumentException: Encoding name 'euc-kr' not supported
[해결방법]
C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0\I18N.CJK.dll
을 프로젝트에 복사해 포함시키면 standalone 환경에서도 정상 작동한다.
한글이외의 문자셋을 사용한다면 I81N.west.dll I18N.rare.dll 등을 사용하면 된다.
Unity 에서 C# System.Text.Encoding.GetEncoding("euc-kr") 으로 한글 인코딩을 사용하였을 경우
Unity Editor 상에서 플레이하면 잘 작동하지만 Emulator 나 Device 의 standalone 환경에서는
다음과 같은 오류가 발생한다.(Eclipse Logcat 으로 확인)
INFO/Unity(499): ArgumentException: Encoding name 'euc-kr' not supported
[해결방법]
C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0\I18N.CJK.dll
을 프로젝트에 복사해 포함시키면 standalone 환경에서도 정상 작동한다.
한글이외의 문자셋을 사용한다면 I81N.west.dll I18N.rare.dll 등을 사용하면 된다.