it leader
article thumbnail
NGUI Android 4.4 kitkat crash
코딩공부/Unity3D 2017. 2. 22. 11:26

유니티 apk를 실행중 씬 이동 시 앱이 비정상적으로 종료되는 현상이 발생하여 로그를 뒤져보니 Fatal signal 11 이라는 에러 메세지가 떳다. 검색결과 Fatal siganl11 유니티 3.x 때부터 이어온 고질적인 버그인거 같은데.. 포럼에서도 해결방법을 모르고 있었다.. 메모리 릭이라는 의견이 분분한 상황 특히 씬 이동 중에 앱이 종료되어 버리니... 어떤 앱던 이런 상황이 발생하게 되면 난감할 뿐이다. 로그에서도 답을 찾기 어렵고.. 메모리 문제, profiler를 아무리 뚫어져라 쳐다봐도 도저히 에러원인을 모르는 상황... 기능적으로 접근해보앗다. 씬전환시 어떤 점들이 바뀌는지... 다행이었던것은 나는 NGUI 와 UGUI를 혼용하여 사용하고 있었다. 씬이 전환될때 NGUI에서 바뀐 씬에..

article thumbnail
Unity 버튼 normal color 스크립트 변경
코딩공부/Unity3D 2017. 2. 8. 15:43

버튼의 컬러만을 가지고 상태를 표시하고 싶을 때, 방법이 없다. status 값을 가지는 것은 버튼의 Transition이 sprite Swap 일 때 가능한데.. 그렇다면 각 상태별 sprite 를 다 넣어주어야 하므로, 디자이너가 없는 경우에는 상당이 불편하다. highlighted color, pressed color, disabled color는 마우스의 입력 상태에 따라 자동 적용되므로, 색깔을 바꾸어 봤자, 의미가 없다. 따라서 normal color를 임의로 사용자가 원하는 상태의 컬러로 변경해서 사용하는 방법이 유일한데.. normal 상태의 버튼 컬러를 변경하기 위해서는 ColorBlock 을 참조하여 대입 시키는 방법이 필수 코드는 다음과 같다. Button tmpButton = tmp..

article thumbnail
Unity3D Inputfield 대문자, 소문자 입력만 받기
코딩공부/Unity3D 2017. 1. 11. 17:00

Unity에서 Pin 코드나, 쿠폰 같은 것을 입력하는 Inputfield를 만들 때, 대소문자 구분 때문에 애를 먹는 경우가 있다. 스크립트 없이는 현재 UGUI에서는 해결 방법은 없다. ( NGUI에서는 모르겠지만. ) InputField 내의 text로의 접근은 되나.. 글자를 입력할 때 InputField OnChangeEvent가 발생 되면서, 강제로 소문자로 바꿔주는 로직이 발생하는 것 같다. 입력 받은 값을 코드상에서 강제로 대문자, 혹은 소문자로 바꿔서 비교하고자 하는 값과 비교하는 방법으로 처리하다가.. 아무래도 찝찝해서 Unity Answer를 뒤져보니 바로 발견! ㅠㅠ 다음의 스크립트를 Inputfield에 추가해주면 문제는 깔끔하게 해결 된다. using System.Collecti..

article thumbnail
[Unity3D] 싱글턴 패턴에서 인스턴스가 중복하여 생성되는 것을 방지하는 방법
코딩공부/Unity3D 2016. 5. 13. 16:45

싱글턴 패턴으로 생성한 객체를 다시 인스턴스화 하였을 때에 오브젝트가 재생산 되는 것을 방지하기 위한 코드 1234567891011121314 void Awake(){ if( instance != null) { Destroy(this.gameObject); // 해당 스크립트를 삭제 return; } instance = this; DontDestroyOnLoad(this); Application.targetFrameRate = 60; //최대 프레임수를 60으로 지정 }Colored by Color Scriptercs 하단에 Application.targetFrameRate = 60; 이부분은 크게 주제와 관계는 없어 보인다. 싱글턴 패턴 사용법이 궁금하신 분들은 아래 링크 참조 2016/05/13 - ..

article thumbnail
[Unity3D] 싱글턴 패턴 사용법
코딩공부/Unity3D 2016. 5. 13. 16:43

싱글턴 패털 사용법이 여러종류가 있습니다. 간단하게 싱글턴으로 만들 클래스 도입부에 싱글턴 선언을 하여 사용하는 방법 12345678910111213141516171819202122232425262728293031323334353637383940414243444546using UnityEngine;using System.Collections; public class SingletonTest : MonoBehaviour { private static SingletonTest instance; private static GameObject container; public static SingletonTest GetInstance(){ if(!instance){ container = new GameObject..

article thumbnail
[Unity3D] XML 데이터 저장하기, 불러오기
코딩공부/Unity3D 2016. 5. 2. 15:04

XML 데이터 불러오기 / 저장하기 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152using UnityEngine;using System.Collections;using System.Collections.Generic; using System.Xml; public class RecItem{ public string Name; public int Level; public float Critical;} public sealed class ItemIO{ public static void Write(List ItemList, string filePath) { XmlDocument Docum..

article thumbnail
[Unity3D] Invoke 사용법
코딩공부/Unity3D 2016. 4. 25. 10:44

Invoke(methodName:string, time:float)- methodName 메소드를 time 초 후 호출합니다. InvokeRepeating(methodName:string, time:float, repeatRate:float)- methodName 메소드를 time 초 후 호출합니다. 첫 호출 후 repeatRate 초 마다 반복 호출합니다. CancelInvoke()- 이 스크립트에 있는 모든 Invoke 를 취소합니다. CancelInvoke(methodName:string) - 이 스크립트에 있는 methodName 을 호출하는 모든 Invoke

article thumbnail
[ Unity3D] 충돌체크관련 메쏘드 정리 ( OnCollision , OnTrigger )
코딩공부/Unity3D 2016. 3. 16. 01:00

Unity3d 에서 충돌 체크 할 때 사용되는 메쏘드에 대한 정리 충돌체크를 할 때 필요한 것은 두 오브젝트 모두 Collide를 Component를 가지고 있어야 한다. 그리고 둘중에 한 오브젝트는 RigidBody Component를 포함하여야 한다. Collision , Trigger 의 차이점 Collision- 충돌하였을 때 RigidBody를 포함한 오브젝트에 변화가 있다.- 매개변수 타입이 Collision Tirgger- 충돌하였을 때 어떤 변화도 없다.- 매개변수 타입이 Collider- Collider 옵션에 isTrigger 체크하여야 한다. Collision 메쏘드 OnCollisionEnter( Collision col) - Collision에 들어 갔을 때OnCollisionSt..

article thumbnail
[Unity3D] List 사용법 및 매쏘드 정리
코딩공부/Unity3D 2016. 2. 27. 14:20

List 선언 List 변수명 = new List(); List num = new List(); 배열 추가 Add List num = new List(); num.Add(2); 배열 중간에 집어 넣기 Insert ex ) list.Insert(인덱스, 요소 ); class Program{ static void Main() { List dogs = new List(); // Example list. dogs.Add("spaniel"); // Contains: spaniel. dogs.Add("beagle"); // Contains: spaniel, beagle. dogs.Insert(1, "dalmatian"); // Spaniel, dalmatian, beagle. foreach (string dog i..

article thumbnail
[Unity3D] 안드로이드 기기에서 back버튼 사용하여 앱 종료하기
코딩공부/Unity3D 2016. 1. 26. 17:04

unity에서 백버튼으로 앱을 종료시키려면 간단한 방법과 좀 복잡한 방법이 있다. 간단한 방법은 종료버튼 입력을 받았을 시에 앱을 종료시키는 방법과 복잡한 방법은 안드로이드 Native에 접근하여 앱을 종료시키는 것이다. 복잡한 방법은 현재 필자가 시험 중에 있으므로 테스트가 무리없이 잘되면 올리도록 하겠다. 간단한 방법은 다음의 코드를 추가 하면 된다. Update(){ //if UNITY_ANDROID if(Input.getKeyDown(KeyCode.Escape)) { Application.Quit(); } //endif } 혹시 iOS와 안드로이드 동시에 빌드할 경우를 대비하여 전처리기를 설정해 줍니다. ( preprocessor ) 간단히 앱을 종료하는 방법을 알아보았습니다. 복잡하게 하는 방법..

[Unity3D] 타이머 사용 방법 ( stopwatch / Time.deltaTime )
코딩공부/Unity3D 2016. 1. 23. 12:01

unity에서 시간 측정하는 방법 1. Stopwatch를 이용한 측정 using System.diagnotics; using debug = UnityEngine.Debug; Stopwatch sw = new Stopwatch(); sw.Start(); sw.Stop(); sw.Reset(); 메서드를 이용하여 시간을 측정할 수 있다. 내부적으로 타이머가 돌아가기 때문에 확인을 하려면 로그를 찍어봐야 된다. Debug.Log(" sw : "+ sw.ElapsedMilliseconds.ToString() +"ms"); 이렇게 로그를 넣어주면 몇 ms가 걸렸는지 확인 할 수 있다. 단!!!!! diagnotics를 사용하기 때문에 UnityEngine.debug와 System.diagnotics.debug ..

[Unity3D] 최적화 방법 자료 [ 펌 ]
코딩공부/Unity3D 2016. 1. 19. 15:31

슬라이스 쉐어에 올라온 자료 입니다. 유니티 프로젝트 최적화 방법 [데브루키/141206 박민근] 유니티 최적화 테크닉 총정리 from MinGeun Park 좋은 꿀팁이 많아서 전체적으로 다 보면 좋겠지만 시간이 없는 사람을 위한 요약 병목 파악cpu너무 많은 DP call복잡한 스크립트나 물리연산Vertex Processing너무 많은 버텍스들버텍스당 너무 많은 연산( Vertex shader )Fregment Processing너무 많은 픽셀, 오버 드로우 ( OverDraw)프래그먼트당 너무 많은 연산 ( 프래그먼트 셰이더/ 픽셀 셰이더 ) Band Width크고, 압축되지 않은 텍스처고해상도 프레임 버퍼 1. 스크립트 최적화- 오브젝트 풀링 : 오브젝트를 동적으로 생성 / 해제 하는 것은 부하가..

[Unity3D] 사운드 관련 매쏘드정리
코딩공부/Unity3D 2016. 1. 12. 16:50

사운드를 재생하기 위해서는 두가지가 필요하다. public AudioSource audio;public AudioClip jumpSound; 두가지 오브젝트가 필요하다. 처음 접하는 사람은 어려울수 있지만.. 이렇게 생각하면 편하다. 사운드를 재생하기 위한 오디오 플레이어와 CD가 필요한 것이다. AudioSource = 오디오플레이어AudioClip = CD 또는 파일 위와 같이 전역 변수로 선언 해준다음 this.audio = this.gameObject.AddComponent(); AudioSource 컴포넌트를 추가해 준다. 그다음 부터 this.audio는 AudioSource의 기능을 사용할 수 있게 된다. 오디오에 파일 연결this.audio.clip = this.jumpSound; 사운드의..

[Unity3D] PlayerPrefs를 이용한 데이터 저장, 불러오기
코딩공부/Unity3D 2015. 12. 24. 18:17

PlayerPrefs를 이용해여 데이터를 로컬에 저장하는 방법 저장 PlayerPrefs.Set자료형(“문자열 키값”, 저장하고자 하는 값 ); PlayerPrefs.SetInt(string key, int value); PlayerPrefs.SetFloat(string key, float value); PlayerPrefs.SetString(string key, string value); //ex) //최근 점수라는 키값으로 저장을 하고자 할 떄 (tmpScore); int score = 10; PlayerPrefs.SetInt(“tmpScore”, score); 2. 불러오기 PlayerPref.Get자료형(“저장했던 키값”, 초기화값); PlayerPref.GetInt(string key, int ..

[Unity3D] c# 변수형변환 int, float, string
코딩공부/Unity3D 2015. 12. 19. 16:20

c# 변수의 형변환 ( Type Convertion) 실수, 정수의 문자변환int a = 3;string str = a.ToString(); flaot b = 3.0f;string str = b.ToString(); 정수 -> 실수 변환int -> float int a = 3; float b = (float)a; 실수 -> 정수 변환float a = 3.0f;int b = (int)a; double c = 123.45; int d = (int)c; 문자열 -> 실수, 정수 변환string e = "123;string f = "123.456"; int g = int.Parse(e);float h = float.Parse(f); 또는 int g = Convert.ToInt32(e);float h = Conv..

[Unity3D] Attributes 설명 모음
코딩공부/Unity3D 2015. 12. 12. 13:43

[Unity3D] Attributes 설명 모음ATTRIBUTES알고 있으면 생산, 작업 효율성을 매우 높일 수 있는 attribute들을 unity에서 제공한다. 1) AddComponentMenu 기본적으로 스크립트는 유니티의 Component->Scripts 메뉴에 자동추가된다. 자동추가말고 아무데나 맘대로 넣고 싶으면 AddComponentMenu를 사용한다. [AddComponentMenu("Transform/Follow Transform")] public class FollowTransform : MonoBehaviour { } 2) ContextMenu 스크립트를 우클릭시 뜨는 context menu에 커맨드를 추가할 수 있다. public class ContextTesting : MonoB..

펌] Unity 데이터 패스
코딩공부/Unity3D 2015. 12. 10. 19:16

각 플랫폼별로 Application 클래스의 프로퍼티들이 지정하는 경로와 엑세스에 대해 정리해보았습니다.테스트한 기기에 따라 결과가 다를 수 있는데, 미진한 부분들은 댓글 남겨주시면 감사하겠습니다. [윈도우 에디터]Application.persistentDataPath : 사용자디렉토리/AppData/LocalLow/회사이름/프로덕트이름파일 읽기 쓰기 가능Application.dataPath : 프로젝트디렉토리/AssetsApplication.streamingAssetsPath : 프로젝트디렉토리/Assets/StreamingAssets파일 읽기 쓰기 가능 [윈도우 응용프로그램]Application.persistentDataPath : 사용자디렉토리/AppData/LocalLow/회사이름/프로덕트이름파일..

[Unity3d] 에러메세지 ( 정리 중 )
코딩공부/Unity3D 2015. 12. 10. 19:03

NullReferenceException : Object Reference not set to an Instance of an - 아직 생성되지 않았거나, 메모리 할당이 안된 객체에 접근할 떄 생기는 오류

[Unity3D]자주 사용하는 메쏘드 ( 정리중 )
코딩공부/Unity3D 2015. 12. 3. 21:22

씬 전환 씬 전환 전 준비할 사항다수의 씬이 생성되어 있어야 함Build Settings -> scenes in Build 에 씬들을 드래그 앤 드랍하여야 함Application.LoadLevel("씬명"); 현재 씬의 이름 값 가져 오기 Application.loadLevelName; GUI 만들기public Texture2D icon = null; //전역변수 선언 GUI.DrawTexture(new Rect(x좌표, y좌표, x Width, y Width), icon); GUI 텍스트 필드 출력 GUI.Label( new Rect( x좌표, y좌표, x Width, y Width), "출력할 내용" ); 사운드 출력사운드 출력 전에 필요한 것들코드로 보면 복잡하지만 다음과 같은 순서이다 오디오 플레..