반응형

현재 http://www.anbsoft.com/ 사이트에 가보면, 1.0796 버전이 존재하는데, 
아직 유니티 버전 4.1에 대응한 버전은 아닌듯하다. 

최신 버전을 설치해봐도 에러가 발생해서 찾아보니,
4.1에서 터치 스크린 키보드 관련한 것이 
Screen 객체로 통합된듯 하다.

UIManager.cs 파일의 728 줄에 보면.. 

#if UNITY_IPHONE || UNITY_ANDROID
#if UNITY_3_5 || UNITY_3_6 || UNITY_3_7 || UNITY_3_8 || UNITY_3_9 || UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7 || UNITY_4_8 || UNITY_4_9
			TouchScreenKeyboard.autorotateToPortrait = autoRotateKeyboardPortrait;
			TouchScreenKeyboard.autorotateToPortraitUpsideDown = autoRotateKeyboardPortraitUpsideDown;
			TouchScreenKeyboard.autorotateToLandscapeLeft = autoRotateKeyboardLandscapeLeft;
			TouchScreenKeyboard.autorotateToLandscapeRight = autoRotateKeyboardLandscapeRight;
#else
			iPhoneKeyboard.autorotateToPortrait = autoRotateKeyboardPortrait;
			iPhoneKeyboard.autorotateToPortraitUpsideDown = autoRotateKeyboardPortraitUpsideDown;
			iPhoneKeyboard.autorotateToLandscapeLeft = autoRotateKeyboardLandscapeLeft;
			iPhoneKeyboard.autorotateToLandscapeRight = autoRotateKeyboardLandscapeRight;
#endif
이렇게 되어 있을 것이고 이부분에서 에러가 날 것이다. 


이부분을 아래 코드와 같이 수정을 해서 사용한다. 4.1 부터 Screen으로 통합된듯 싶다. 

#if UNITY_IPHONE || UNITY_ANDROID
#if UNITY_3_5 || UNITY_3_6 || UNITY_3_7 || UNITY_3_8 || UNITY_3_9 || UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7 || UNITY_4_8 || UNITY_4_9
			Screen.autorotateToPortrait = autoRotateKeyboardPortrait;
			Screen.autorotateToPortraitUpsideDown = autoRotateKeyboardPortraitUpsideDown;
			Screen.autorotateToLandscapeLeft = autoRotateKeyboardLandscapeLeft;
			Screen.autorotateToLandscapeRight = autoRotateKeyboardLandscapeRight;
            Screen.autorotateToPortrait = autoRotateKeyboardPortrait;
#else
			iPhoneKeyboard.autorotateToPortrait = autoRotateKeyboardPortrait;
			iPhoneKeyboard.autorotateToPortraitUpsideDown = autoRotateKeyboardPortraitUpsideDown;
			iPhoneKeyboard.autorotateToLandscapeLeft = autoRotateKeyboardLandscapeLeft;
			iPhoneKeyboard.autorotateToLandscapeRight = autoRotateKeyboardLandscapeRight;
#endif
참고 : http://forum.anbsoft.com/viewtopic.php?f=10&t=4696





반응형
반응형

3.x 코딩을 작업하다가 4.x로 작업하다보면 경고 메세지가 뜨는 부분이 있다. 

문서를 자세히 살펴봤으면 미리 수정할 수 있는 부분이지만, 경고메세지를 먼저 보게되어

해당 관련 이슈를 찾아 보니 있어 남겨 놓는다. 

 warning CS0618: `UnityEngine.GameObject.SetActiveRecursively(bool)' is obsolete: `gameObject.SetActiveRecursively() is obsolete. Use GameObject.SetActive(), which is now inherited by children.'

바로 위의 경고 메세지가 나왔을때 대처 할 수 있는 내용은 http://bit.ly/YBUvaf 페이지를 통해서 확인후 수정이 가능하다. 

기존에 사용하던 GameObject.SetActiveRecursively() 함수는 더이상 사용되지 않는다. 

4.x 버전에서는 해당 오브젝트 하위의 노드까지 알아서 정리하게 된다.

고로, GameObject.SetActive() 함수로 대체 되어야 한다. 

 

반응형
반응형

데이터를 직접 호출하는 방법이 존재하는데, 이방법은 아래 코드와 같이 직접 파일을 읽어오는 방식으로
코딩을 해볼 수 있다. 하지만 유니티의 경우 어셋번들이라는 개념이 존재한다. 

FileStream fs;
fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);

if (fs != null)
{
    BinaryReader reader = new BinaryReader(fs);

어셋번들 방법을 적용하기 위해서는 왠지 Resource.Load()라는 함수를 통해서 리소스를 읽어와야 할듯 싶다. 
그래서 다시 아래와 같은 코드 방식으로 바꾸어 봤다.
TextAsset asset = Resources.Load("enemy_seq_bin") as TextAsset;
Stream s = new MemoryStream(asset.bytes);
BinaryReader br = new BinaryReader(s);
하지만 유니티에서 제공되는 TextAsset 데이타 방식은 xml, html, htm. xml, bytes 라는 데이터들인데
여기서 이미지 같은 바이너리는 파일의 확장자는 TextAsset.bytes를 통해 데이터를 읽어 올 수 있는 듯하다.
//Load texture from disk
TextAsset bindata= Resources.Load("Texture") as TextAsset;
Texture2D tex = new Texture2D(1,1);
tex.LoadImage(bindata.bytes); 
그래서 위와 같은 코드로 작성이 되어야 바이너리 파일을 읽을 수 있어 보인다. 

실제로 C++이나 ObjectC로 개발한 툴을 통해 나온 데이터들은 바이너리로 저장되어 있는데,
유니티를 사용할 때는 될 수 있으면 텍스트로 저장되고 읽혀져야 하는 듯싶다. 

인터넷에서 어떤 유니티 사용자가 남긴 글중에는 바이너리 데이터를 유니티에서 읽어보니 오히려 속도가
더 느려졌다는 글도 있었다. 아마도 유니티 번들 데이터는 압호화된 압축데이터 일듯한데,
바이너리보다는 텍스트로 된 데이터 접근이 속도가 더 빠른가 보다. 

이렇게 해서 기존에 구조체형태의 데이터 저장 방식에서 각각의 데이터를 xml 이나 텍스트로 구분 문자를
넣어 저장해야 하는 번거로움이 생기었다. 




반응형

+ Recent posts