데스크탑 플랫폼이 아닌 타 플랫폼의 개발을 진행하여도 대부분의 테스트는 데스크탑에서 진행하는 경우가 많습니다.
그런데 파일을 생성, 삭제, 수정 하는 작업을 하였을 때 에셋에 바로바로 적용이 되지 않는 경우가 있습니다.
지금 까지는 파일 관련 작업이 이루어 지고나면 Ctrl + R을 사용해서 직접 갱신을 하고 있었는데 찾아보니 목록을 바로 갱신시켜주는 함수가 있었네요.
파일 관련 함수 사용 후 위 함수를 호출하면 목록에 바로 반영이 됩니다.
2014년 8월 15일 금요일
2014년 7월 12일 토요일
[ Unity ] Android Admob 붙이기
Unity 프로젝트에 Admob 광고를 붙여보겠습니다.
이 글은 Google Mobile Ads Unity Plugin v2.1을 기준으로 작성되었습니다.
1. 패키지 다운로드
아래 링크를 통하여 최신 라이브러리를 다운받습니다.
다운로드
2. 패키지 Import
다운로드 받은 패키지를 클릭하여 유니티 프로젝트에 추가해 줍니다.
3. 라이브러리 추가
광고를 실행시키려면 구글 라이브러리가 필요합니다.
안드로이드가 설치 된 폴더의 sdk\extras\google\google_play_services\libproject 경로로 이동하면, google-play-services_lib 폴더가 존재하는데 이 폴더를 import된 폴더의 Plugins/Android안에 복사해 줍니다.
4. 애드몹 광고 생성
애드몹 사이트로 이동해 앱을 생성하시면 광고 단위 ID가 생성 됩니다.
해당 ID를 기록해두세요.
5. 새로운 스크립트 생성 및 AndroidManifest 수정
아래 스크립트에 4번에서 작성한 광고 ID를 입력해 줍니다.
유니티에서 GameObject를 만들어 새로 생성한 스크립트를 컴포넌트로 추가해줍니다.
AndroidManifest에서 com.example.sampleapp으로 되어있는 패키지명을 자신의 프로젝트 패키지명으로 변경 해줍니다.
6. 해당 Plugin 기준으로 안드로이드 버전 3.2 이상부터 사용이 가능합니다.
프로젝트 세팅에서 빌드 버전을 3.2 이상으로 변경해주세요.
빌드 후 실행을하면 잠시 후 배너가 출력됩니다.
이 글은 Google Mobile Ads Unity Plugin v2.1을 기준으로 작성되었습니다.
1. 패키지 다운로드
아래 링크를 통하여 최신 라이브러리를 다운받습니다.
다운로드
2. 패키지 Import
다운로드 받은 패키지를 클릭하여 유니티 프로젝트에 추가해 줍니다.
3. 라이브러리 추가
광고를 실행시키려면 구글 라이브러리가 필요합니다.
안드로이드가 설치 된 폴더의 sdk\extras\google\google_play_services\libproject 경로로 이동하면, google-play-services_lib 폴더가 존재하는데 이 폴더를 import된 폴더의 Plugins/Android안에 복사해 줍니다.
4. 애드몹 광고 생성
애드몹 사이트로 이동해 앱을 생성하시면 광고 단위 ID가 생성 됩니다.
해당 ID를 기록해두세요.
5. 새로운 스크립트 생성 및 AndroidManifest 수정
아래 스크립트에 4번에서 작성한 광고 ID를 입력해 줍니다.
유니티에서 GameObject를 만들어 새로 생성한 스크립트를 컴포넌트로 추가해줍니다.
AndroidManifest에서 com.example.sampleapp으로 되어있는 패키지명을 자신의 프로젝트 패키지명으로 변경 해줍니다.
6. 해당 Plugin 기준으로 안드로이드 버전 3.2 이상부터 사용이 가능합니다.
프로젝트 세팅에서 빌드 버전을 3.2 이상으로 변경해주세요.
빌드 후 실행을하면 잠시 후 배너가 출력됩니다.
2014년 5월 13일 화요일
[ Unity ] NGUI 버튼 이벤트 동적 할당
이번에는 NGUI를 사용 할 때 자주 사용하는 UIButton 컴포넌트에 이벤트를 동적으로 추가시키는 방법을 알아보겠습니다.
대부분은 인스펙터 화면에서 이벤트를 연결해주지만 프리팹을 사용하게 되면 이벤트가 해제 된 상태로 생성이 됩니다. 그래서 동적으로 추가해야 할 일이 생기게 됩니다.
인스펙터 화면에서 m_BtnTest에 UIButton 컴포넌트를 연결시켜 주었다고 가정 합니다.
EventDelegate를 생성할때는 콜백 함수가 정의되어 있는 컴포넌트와 콜백 함수명을 입력해 주어야 합니다. 만약 ButtonTutorial이 아닌 다른 스크립트 상에 존재하는 함수를 호출하고 싶다면 해당 GameObject의 컴포넌트를 추가시켜주면 됩니다.
MakeParameter 함수는 파라메타를 여러개 추가시켜 줄 때를 대비해서 만들어 보았습니다. EventDelegate.Paramter를 생성하고 전달하고자 하는 값과, 해당 값의 타입을 입력해주면 됩니다. 여기서 Object는 UnityEngine.Object 입니다. System.object를 넣으면 작동하지 않습니다. 때문에 아직 int, string 같은 값을 어떻게 전달해야 되는지는 잘 모르겠네요.
마지막으로 파라메타를 추가시켜주었다면 이벤트를 등록해야 합니다. 이벤트를 추가 할 버튼의 onClick값과 생성 된 EventDelegate를 넣어주면 동적으로 할당하는 작업이 완료 됩니다.
씬을 실행하고 버튼을 클릭해보면 ButtonTutorial 스크립트 안에 존재하는 onBtnEvent함수가 정상적으로 호출 되는 것을 보실 수 있습니다. 만약 파라메타를 전달하고 싶지 않다면 중간에 이벤트 파라메타를 연결하지 않고 콜백 함수의 파라메타도 삭제해 주시면 됩니다.
System.object 변수를 UnityEngine.Object로 변환하는 방법을 찾으면 추가 포스팅 하도록 하겠습니다.
[ 2014. 05. 22 추가 ]
NGUI, UIButton 이벤트를 스크립트로 작성시 GameObject가 아닌 다른 타입의 변수를 전달하는 방법을 추가로 알아냈습니다.
기본 적으로는 추가 하기전 내용과 동일 합니다. 다만 파라메타 지정 시 컴포넌트와 필드명을 입력해주면 int, float, vector 등등 GameObject가 아닌 타입의 변수를 파라메타로 지정 할 수 있습니다.
대부분은 인스펙터 화면에서 이벤트를 연결해주지만 프리팹을 사용하게 되면 이벤트가 해제 된 상태로 생성이 됩니다. 그래서 동적으로 추가해야 할 일이 생기게 됩니다.
인스펙터 화면에서 m_BtnTest에 UIButton 컴포넌트를 연결시켜 주었다고 가정 합니다.
EventDelegate를 생성할때는 콜백 함수가 정의되어 있는 컴포넌트와 콜백 함수명을 입력해 주어야 합니다. 만약 ButtonTutorial이 아닌 다른 스크립트 상에 존재하는 함수를 호출하고 싶다면 해당 GameObject의 컴포넌트를 추가시켜주면 됩니다.
MakeParameter 함수는 파라메타를 여러개 추가시켜 줄 때를 대비해서 만들어 보았습니다. EventDelegate.Paramter를 생성하고 전달하고자 하는 값과, 해당 값의 타입을 입력해주면 됩니다. 여기서 Object는 UnityEngine.Object 입니다. System.object를 넣으면 작동하지 않습니다. 때문에 아직 int, string 같은 값을 어떻게 전달해야 되는지는 잘 모르겠네요.
마지막으로 파라메타를 추가시켜주었다면 이벤트를 등록해야 합니다. 이벤트를 추가 할 버튼의 onClick값과 생성 된 EventDelegate를 넣어주면 동적으로 할당하는 작업이 완료 됩니다.
씬을 실행하고 버튼을 클릭해보면 ButtonTutorial 스크립트 안에 존재하는 onBtnEvent함수가 정상적으로 호출 되는 것을 보실 수 있습니다. 만약 파라메타를 전달하고 싶지 않다면 중간에 이벤트 파라메타를 연결하지 않고 콜백 함수의 파라메타도 삭제해 주시면 됩니다.
System.object 변수를 UnityEngine.Object로 변환하는 방법을 찾으면 추가 포스팅 하도록 하겠습니다.
[ 2014. 05. 22 추가 ]
NGUI, UIButton 이벤트를 스크립트로 작성시 GameObject가 아닌 다른 타입의 변수를 전달하는 방법을 추가로 알아냈습니다.
기본 적으로는 추가 하기전 내용과 동일 합니다. 다만 파라메타 지정 시 컴포넌트와 필드명을 입력해주면 int, float, vector 등등 GameObject가 아닌 타입의 변수를 파라메타로 지정 할 수 있습니다.
2014년 5월 2일 금요일
[ Unity ] 롤링되는 숫자 만들기
글 제목을 어떤 것으로 해야 될지 어렵네요...
이번 Unity3D 튜토리얼 에서는 일정 시간 동안 숫자가 롤링되며 원하는 값으로 변하는 것을 만들어 보겠습니다.
예를 들면 '0 이란 숫자에서 100 이라는 숫자로 변하는데 5초의 시간이 걸렸으면 좋겠다.' 한다면 1초당 20씩 증가하게 될 테고 0.1초당 2씩 증가하게 되겠습니다.
글로 설명하는 것 보다는 눈으로 확인하는 것이 더 좋을듯한데 차후에 샘플을 제작하여 올려보겠습니다.
그럼, 소스 코드 공개로 시작하겠습니다.
주석을 보시면 어떻게 동작되는지 어느정도 감이 오실겁니다.
코드에 대한 설명을 조금하자면...
Unity 하이라이키 탭에서 GameObject를 생성하시고 해당 소스를 컴포넌트로 추가하면 GUIText와 float 타입의 시간을 입력 할 수 있는 칸이 인스펙터상에서 출력이 됩니다.
원하는 라벨만큼 GUIText와 연결을 해주시고 숫자가 롤링 될 시간을 입력하시면 됩니다.
float[] m_fValue의 경우에는 현재 값을 저장하는 용도로 인스펙터에는 출력되지 않습니다.
NGUI를 사용하신다면 GUIText를 UILabel로 변경해 주시기만하면 사용이 가능합니다.
초기화 부분 입니다. 인스펙터에서 연결한 라벨만큼 저장공간을 생성하는 단순한 부분입니다.
값을 초기화 하는 부분으로 외부 스크립트에서 접근이 가능하도록 public으로 선언되어 있습니다.
_pos의 경우에는 라벨 index번호와 일치하게 전달이 되어야 합니다.
해당 함수로 값을 입력시 롤링이 되지 않고 값이 바로 적용 됩니다.
외부 스크립트에서 롤링 시키며 값을 변경할 라벨 index와 값을 전달받아 해당 값을 저장 및 코루틴을 실행하여 롤링을 시작시킵니다.
가장 핵심적인 코루틴 입니다.
현재 값, 최종 값, 이동 할 거리등을 알아내어 입력 된 시간(m_During)동안 롤링을 시키면서 값을 자연스럽게 변화시킵니다.
위 코루틴에서 시작 값, 최종 값, 이동할 거리를 전달받아 각종 예외처리를 거처 이동시킨 값을 리턴하는 부분입니다.
원본 소스에는 시간으로 이동시키는 코드 이외에 프레임을 기준으로 이동시키는 코드가 있었지만 정리가 제대로 되지 않은 관계로 시간으로 동작하는 부분만을 공개합니다.
동작 테스트는 여러번 해보았지만 잘못되거나 비효율적인 부분이 있을 수 있습니다.
그런 부분이 보이시면 말씀부탁드리겠습니다!
이번 Unity3D 튜토리얼 에서는 일정 시간 동안 숫자가 롤링되며 원하는 값으로 변하는 것을 만들어 보겠습니다.
예를 들면 '0 이란 숫자에서 100 이라는 숫자로 변하는데 5초의 시간이 걸렸으면 좋겠다.' 한다면 1초당 20씩 증가하게 될 테고 0.1초당 2씩 증가하게 되겠습니다.
글로 설명하는 것 보다는 눈으로 확인하는 것이 더 좋을듯한데 차후에 샘플을 제작하여 올려보겠습니다.
그럼, 소스 코드 공개로 시작하겠습니다.
주석을 보시면 어떻게 동작되는지 어느정도 감이 오실겁니다.
코드에 대한 설명을 조금하자면...
Unity 하이라이키 탭에서 GameObject를 생성하시고 해당 소스를 컴포넌트로 추가하면 GUIText와 float 타입의 시간을 입력 할 수 있는 칸이 인스펙터상에서 출력이 됩니다.
원하는 라벨만큼 GUIText와 연결을 해주시고 숫자가 롤링 될 시간을 입력하시면 됩니다.
float[] m_fValue의 경우에는 현재 값을 저장하는 용도로 인스펙터에는 출력되지 않습니다.
NGUI를 사용하신다면 GUIText를 UILabel로 변경해 주시기만하면 사용이 가능합니다.
초기화 부분 입니다. 인스펙터에서 연결한 라벨만큼 저장공간을 생성하는 단순한 부분입니다.
값을 초기화 하는 부분으로 외부 스크립트에서 접근이 가능하도록 public으로 선언되어 있습니다.
_pos의 경우에는 라벨 index번호와 일치하게 전달이 되어야 합니다.
해당 함수로 값을 입력시 롤링이 되지 않고 값이 바로 적용 됩니다.
외부 스크립트에서 롤링 시키며 값을 변경할 라벨 index와 값을 전달받아 해당 값을 저장 및 코루틴을 실행하여 롤링을 시작시킵니다.
가장 핵심적인 코루틴 입니다.
현재 값, 최종 값, 이동 할 거리등을 알아내어 입력 된 시간(m_During)동안 롤링을 시키면서 값을 자연스럽게 변화시킵니다.
위 코루틴에서 시작 값, 최종 값, 이동할 거리를 전달받아 각종 예외처리를 거처 이동시킨 값을 리턴하는 부분입니다.
원본 소스에는 시간으로 이동시키는 코드 이외에 프레임을 기준으로 이동시키는 코드가 있었지만 정리가 제대로 되지 않은 관계로 시간으로 동작하는 부분만을 공개합니다.
동작 테스트는 여러번 해보았지만 잘못되거나 비효율적인 부분이 있을 수 있습니다.
그런 부분이 보이시면 말씀부탁드리겠습니다!
피드 구독하기:
글 (Atom)