본문 바로가기

unity tech.

(13)
R.java 관련 [버전업 되면서 리소스들어감 - 유니티 버그] unity 5 이전 버전에서는 Plugin/Android/ 폴더 안에 res 폴더를 두면 최종 R.java에 리소스들이 들어가는데, unity 5에서는 들어가지 않음. Plugin/Android/ 폴더 하위에 라이브러리 프로젝트 폴더 추가. 이 폴더에 project.properties 파일 추가 project.properties 파일의 내용은 아래와 같음 target=android-16android.library=true 이 폴더에 AndroidMenifast.xml 가 존재해야 함 (메인 AndroidMenifast.xml이 있을때 둘이 다르면 빌드시 충돌나는데, 같은거면 충돌 나지 않음) 이 폴더안의 res 폴더 안에 리소스 들이 있으면, 빌드 시 R.j..
단어로 string 을 split string[] separators = new string[] { "Android" };string[] paths = Application.persistentDataPath.Split(separators, System.StringSplitOptions.None);string rootPath = paths[0] + "Folder/"; 갤 노트 4에서 Application.persistentDataPath 는 /storage/emulated/0/Android/com.preject.Temp.apk 이런 식으로 경로 나옴. 위와 같이 Android로 자르면 path[0] 은 /storage/emulated/0/ sd card 경로가 됨
Texture Type의 Texture와 Sprite 단순 차이 Texture는 무조건 이미지 사이즈가 2의 자승으로 변환 Sprite는 Max Size 설정에 따라 변환 - Max Size 이하면 크기 그대로 유지
이미지 로드해서 Image에 적용 로컬에 있는 이미지 WWW로 로드 public Texture2D LoadTextureByWWW(string path) { WWW www = new WWW("file://" + path); return www.texture; } Sprite 만들기 public Sprite CreateSprite(string path) { Texture2D tex = LoadTextureByWWW(path); return Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f)); } Image img; img.overrideSprite = CreateSprite(imgPath);
유니티 화면에서의 회전 값과 코드 상의 회전 값 model 이라는 Transform 있다. 유니티 화면에서 Rotation 값들을 입력할 때 보면, 도로 입력한다. 코드 상에서 model.localRotation 값을 보면 라디안 값이다. model.localRotation = Quaternion.Euler(new Vector3(degreeX, degreeY, degreeZ)); 이런 식으로 값을 적용할 때는 도. 유니티화면에서 도로 입력하고, 코드 상에서 model.localRotation 값(라디안)을 그대로 가져와서 도로 변환해서 model.localRotation 값을 적용해 보면 회전이 유니티 화면에서 입력할 때와 다르게 나온다. * 라디안 -> 도 : 0.223f * Mathf.Rad2Deg* 도 -> 라디안 : 90 * Mathf.Deg2..
자식 객체 Destroy 할 때 주의 transform.childCount ------ (1)Destroy(child.gameObject)transform.childCount ------ (2) 위와 같이 자식 객체를 지웠을 때, (1)과 (2) 값은 같다. 화면에서도 지워야 childCount 값이 변한다. child.parent = null
MonoBehavior 객체 사용시 주의 MonoBehavior를 상속 받은 TempClass가 있다. scene에 붙이지 않고, TempClass temp = new TempClass(); 이렇게 생성하고 if(temp == null) { } else { } 이런 식으로 처리할 때, temp는 무조건 null 이다. MonoBehavior는 scene에 붙어야 한다.
컴포넌트 찾기 주의 사항 다음과 같은 구조의 GameObject 가 있다. ItemItemTextMesh 여기서 TextMesh 컴포넌트인 ItemTextMesh를 찾는다. TextMesh itemText = item.GetComponentInChildren(); 그런데 여기서 itemText.gameObject 의 Active 상태가 false이면, itemText를 찾지 못한다(itemText = null). 이 때 Transform으로 찾으면 찾아진다. Transform itemTransform = item.transform.FindChild("ItemTextMesh");TextMesh itemText = itemTransform.GetComponent(); 그리고 또 하나. 이름이 Item인 gameObject 프리팹을 ..