2015의 게시물 표시

유니티 기즈모의 형태를 바꾸는 메소드OnDrawGizmos()

void  OnDrawGizmos() {     Gizmos.color = Color.red;     Gizmos.DrawCube(transform.position, Vector3.one *0.1f); } void  OnDrawGizmos()  {      Gizmos.DrawIcon(transform.position,  "ICON_RED_1.png" ,  true );  } http://docs.unity3d.com/ScriptReference/Gizmos.DrawIcon.html Gizmos 폴더 만들어 놓고 이미지 넣어 놓은다음 사용 할 수 있다.

Occlusion 유니티 최적화 보이는곳만 렌더링

http://docs.unity3d.com/kr/current/Manual/OcclusionCulling.html

에디터 상태에서 Instantiate 할때에는 PrefabUtility.InstantiatePrefab 을 사용해야 원본 프리팹의 정보를 가져 올 수 있음.

 PrefabUtility.InstantiatePrefab http://docs.unity3d.com/ScriptReference/PrefabUtility.InstantiatePrefab.html GameObject  go =  PrefabUtility .InstantiatePrefab( Resources .Load( "basketball" ))  as   GameObject ;  GameObject  pre =  PrefabUtility .InstantiatePrefab( MapMag .selectPrefab)  as   GameObject ;                   pre.transform.position = firstPos;                   pre.transform.rotation = firstRot; 위치와 회전값을 따로 정해줘야 한다.

유니티 에디터 커서 이미지 바꾸기

http://docs.unity3d.com/ScriptReference/Cursor.SetCursor.html

문자열 형변환 float.Parse(mapDepthInfo[1]);

float .Parse(mapDepthInfo[1]);

배열 길이(사이즈) 재정의 할때

using  System; if  (PREFABS.Length > 5) {  // 배열 길이 재정의 Array .Resize< GameObject >( ref  PREFABS, 5);  Array.Resize<자료형>(ref 배열명, 변경할 길이); } http://jy93630.blog.me/220496790271 Array 설명

유니티 에디터에서 기즈모 안보이게 하기

Tools .current =  Tool .None;  // 기즈모 안보이게 http://answers.unity3d.com/questions/326430/how-to-disable-the-default-transform-gizmo-in-edit.html

배열 초기화

using  System; public   class   MapMag  :  MonoBehaviour  {          public   GameObject [] PREFABS;      public   void  ArrayResrt()     {         selectPrefab =  null ;          Array .Clear(PREFABS, 0, PREFABS.Length);     } } 네임스페이스 using  System; 사용.   Array .Clear(배열명, 시작 인덱스, 지워질 배열 길이);

리스트 항목 삭제

    void RandomNum()     {         randomNumber = Random.Range(0, 4 + 1);         FLOORNUM.Add(randomNumber);         print(FLOORNUM[0]);         FLOORNUM.Remove(randomNumber); // 리스트 항목삭제         print(FLOORNUM[0]);     } 전체삭제는 CLEAR

enum for 문으로 검색하여 딕셔너리 에 집어넣기( 문자 형변환 )

using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; using System.Linq; using Enum = System.Enum; public class GameMagNew : MonoBehaviour {     public Text DISTEXT;     public GameObject[] FLOORS;     IDictionary<string, GameObject> FLOORSDIC = new Dictionary<string, GameObject>();     enum FloorState     {         NONE = 0,         ONE,         TOW,         THREE,         FOR,         FIVE     }     FloorState FloorStat = FloorState.NONE;                 void Start () {         for (int i = 1; i < (int)FloorState.FIVE; i++)         {             FloorStat = (FloorState)i;             FLOORSDIC[FloorStat.ToString()] = FLOORS[i];         } }     void Update()     { } }

png 이미지 와이어 프레임 생길때

임포트한 텍스쳐 이미지 선택 텍스쳐 타입을 어드밴스로 설정 매쉬 타입을 full rect로 변경

구글 플레이 연동

googleplaygames plugin 구글 검색 후 다운로드 https://github.com/playgameservices/play-games-plugin-for-unity 구글 플레이 게임 서비스 폴더 복사 후 유니티 구글 플레이 쪽으로 붙여 넣기 - 패키지 설치 윈도우 -> 구글플레이 -> 셋업 -> 안드로이드 셋업 리소스 내보내기. 안드로이드 매니 패스트 아이디 확인 도전과제

[Unity3d] 카메라 2개 동시에 보기

이미지
[Unity3d] 카메라 2개 동시에 보기 Programming/Unity3D Camera ,  depth ,  layer ,  orthographic ,  Perspective 키워드 : camera, layer, clear flags, culling mask, Depth camera는 지정된 layer만 볼 수 있으며, depth 조절을 통해 여러 camera를 겹쳐서(overlay) 동시에 볼 수 있다. 예 : 3d object의 쉐이더효과 때문에 UI부분의 object들이 이상하게 보여 , 2d ui object는 평면으로 보기를 원한다. 그래서 3d object는 perspective 카메라로, 2d object는 orthographic 카메라로 보기로 한다.  Main Camera에서만 보여질 것은 Layer를 "3D" tag로 지정. ("3D"는 임의로 정한것.) Clear Flags에서는 해당 tag만 보이도록 Depth only로 지정 Culling Mask에서도 해당 layer만 지정한다.  Depth를 기본값인 0으로 지정한다.  마찬가지로 object, light에서도 layer를 같은 layer "3D"로 지정해야 한다. 이 위에 겹쳐서 보일 orthographic 카메라 설정 layer와 Culling mask를 Layer의 "UI" tag로 설정. depth는 0보다 큰 1로 지정한다.  2d로 보여야할 object의 layer를 UI tag로 설정.

enum 을 foreach로 검색하고 현재 상태를 바꿔주는 다른 방법입니다.

using  UnityEngine; using  System.Collections; using   Enum  = System. Enum ; public   class   enumTest  :  MonoBehaviour  {      public   enum   myType     {         NONE = -1,         LEFT,         RIGHT,         UP,         DOWN     }      myType  type =  myType .DOWN;      void  Start ()      {        print(type);  // 결과값 DOWN        EnumChange();        print(type);  // 결과값 LEFT     }      void  EnumChange()     {          foreach  ( myType  mytype  in   Enum .GetValues( typeof ( myType )))         {              if  ( "DOWN"  == mytype.ToString())             {                 type = ( myType ) Enum .Parse( typeof ( myType ),  "LEFT" );             }         }      } }

RPG 기초

Material = 디퓨즈와 모바일 디퓨즈의 차이는 속도이다. (옵션 다름) 모바일 디퓨즈가 일반 디퓨즈에 비해 속도 향상 20% 이상이다. animation type   - humanoid : 인간형  - Generic : 동물형  - Legacy : 유니티 구버전 애니메이션 타입.   Avatar     - 본 정보등 애니메이션 정보가 들어 있는 파일 1. 애니메이션 컨트롤러 생성    - 마우스 우클릭 -> Create -> Animation Controller     | = OR연산자. 피킹작업 -> 카메라를 기준으로 좌표를 3d로 --> 2d ->>3d로 레이어 마스크 int  GroundLayer = 1 <<  LayerMask .NameToLayer( "Ground" ); Apply root motion 에서 트랜스폼 제어 할때 인스펙터 애니메이션 탭에서 해당 값 체크 해제 ray point 설정( 클릭시 해당 포인트에 게임 오브젝트 생성) fbx에 애니메이션이 적용 되오 있을대  ctrl + d 수정 애니메이터에 애니메이션을 적용할때는 프리팹을 넣는것이 아니라 애니메이션 클립을 넣어야 된다. Has Exit Time 은 해당 시간만큼 지나고 다음 애니메이션 진행 딕셔너리  sort 할때는 IDictionary를 사용한다 NGUI -> 2DUI 생성했을때 카메라 뷰 이상하게 나올때 NGUI 카메라와 메인 카메라의 컬링 마스크를 확인 한다.( 체크 해제 되어 있을 수 있다) NGUI 실행시 반드시 레이어 추가하여 새롭게 적용한다. RECT 는 영역 POSITION은 위치 카메라 -> Rendering path 의 forward는 라이트를 뭉개주는 알고리즘이 있다. ( 로우퀄리티) ,  deferred 는 하이퀄리티. user setting는 menu->

비주얼 스튜디오 디버깅

이미지
접속 디버깅 툴 다운 ( 2013버전 , 비주얼 스튜디오 버전에 맞게 다운) https://visualstudiogallery.msdn.microsoft.com/20b80b8c-659b-45ef-96c1-437828fe7cf2 유니티, 비주얼 스튜디오 종료 후 다운된 파일 인스톨 ( 특별한것 없음 다음 다음~~~) 디버깅 할때는 edit -> preference -> external tools -> Unityvs 선택한다. F9 -> 실행중 멈춤 (F9 두번 마크 지움) -> F5 : 디버그 실행 (Shift f5 디버그 실행 중지) F5 입력으로 비주얼 스튜디오 디버그 실행 후 유니티에서도 게임 실행 버튼 클릭. 디버그 실행시 F5 디버깅한 코드 다시 실행 F10번 으로 다음 코드 디버깅 F11번 함수 실행문에서 함수 안으로 체크 되게.

itween 강좌

https://www.youtube.com/watch?v=hbSxwoWjBgQ ease type sample http://robertpenner.com/easing/easing_demo.html

애드몹(광고) 붙이기

이미지
     구글 검색 -> 애드몹 -> 가입하기-> 내구글 계정으로 로그인 -> 로그인 -> AdMob에 가입하기 페이지 작성 시작하기 -> 수익 올리기 작성 -> 완료  안드로이드  SDK - -> GOOGLE PLAY SERVICE 설치 -> D:\android-sdk_r24.3.4-windows\android-sdk-windows\extras\google google_play_services 폴더가 설치 되어 있는지 확인 D:\android-sdk_r24.3.4-windows\android-sdk-windows\extras\google\google_play_services 구글 애드몹 유니티 플러그인  설다운 및 설치 Google Mobile Ads Unity Plugin v2.3.1 https://github.com/googleads/googleads-mobile-unity/releases/tag/2.3.1 GoogleMobileAds.unitypackage  설치. D:\android-sdk_r24.3.4-windows\android-sdk-windows\extras\google\google_play_services\libproject google-play-services_lib 폴더 유니티  Plugins -> Android 밑으로 드래그 해서 넣는다. (설치후 작동이 잘 되는지 확인하기 위해서 빌드 해본다.) 빈게임 오브젝트 생성 -> ADMOB 스크립트 작성 후 연결 테스트용 단말기의 고유 ID 스크립트 내에 등록하여 클릭하여도 결제 청구 하지 않도록 한다. 단말기 고유 ID 검색법 ->Device ID 앱설치

에디터 생성 - Tool

이미지
Editor 폴더 안의 소스 코드들은 유니티 내부에서 자동으로 실행된다 ( 게임 오브젝트에 안 붙여도 됨 ) * Editor 폴더는 프로젝트창 어디에 있어도 상관 없음. //print() 는 모노비헤비어 상속임으로 모노비헤비어 상속하지 않은 클래스에서 사용 못함. 에디터 사용 기본 using  UnityEngine; using  System.Collections; using  UnityEditor;  // 에디터 사용 네임 스페이스 [ CustomEditor ( typeof ( MapMag ))] public   class   MapMagEditor  :  Editor  { } Editor 는 play상태가 아니여도 실행된다. SNAP, snap 스냅 셋팅 edif -> snap settings... SNAP, snap 스냅 셋팅 -> 콘트롤 키를 누른 상태에서 이동하면 정해진 범위만큼 스냅 하여 이동한다. //피킹 테스트 -> 월드 좌표계를 로컬 좌표계로 클릭시 이동처리 ctrl + f2 -> 비주얼 스튜디오 북마크 f2번으로 이동가능

음수를 양수로 만들때는 *-1 해주면 된다.

음수를 양수로 만들때는 *-1 해주면 된다.

ref 참조 / bool 형 메소드에서 매개변수로 복제 하지 않고 받아오기

using UnityEngine; using System.Collections; public class test : MonoBehaviour {           bool testType = true;     void TestMethod(bool type)     {         type = false;         Debug.Log(testType); // 복제가 되어 다른 변수가 되므로 true     }     void TestMethodRef(ref bool type)     {         type = false;         Debug.Log(testType); // ref(참조) 선언으로 원래 변수 그대로 사용 하므로 false     }     void Start()     {         TestMethod(testType);         TestMethodRef(ref testType);     } } ref 설명 https://msdn.microsoft.com/ko-kr/library/14akc2c7.aspx

광고 붙이기.

이미지
SDK Manager.exe -  sdk 설치 -> google play services 에셋프토어 검색 -> Unity Ads  -> import unity-ads : 자바 코드로 되어 있음 AndroidManifest : 프로젝트 셋팅에 관련된것들 xml 형식 ( 광고 등등 ) 권한정보 < uses-permission   android:name = " android.permission.ACCESS_NETWORK_STATE "  /> < uses-permission   android:name = " android.permission.INTERNET "  /> // 인터넷 사용 광고 관련 정보  < application >         < activity              android:name = " com.unity3d.ads.android.view.UnityAdsFullscreenActivity "              android:configChanges = " fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen "              android:theme = " @android:style/Theme.NoTitleBar.Fullscreen "              android:hardwareAccelerated = " true "              tools:ignore = " UnusedAttribute " /> </ application > https://dashboard

애니메이션 스테이트 가지고 오기 레거시 애니메이션 스피드 조절

anim = GetComponent< Animation >(); // 애니메이션 스테이트  AnimationState  animStat; //애니메이션 클립 "run"을 가지고 와서      animStat = anim[ "run" ];       //스피드를 올려준다.      animStat.speed = 5f;

소수점 버림 , 반올림

Mathf.floor(float); 소수점 버림

보간 애니메이션 Lerp , Mathf.Lerp , ㅍㄷ

http://seungngil.tistory.com/152    void FillImage()     {         t += Time.deltaTime / 10.0f;         print(t);         bar.fillAmount = Mathf.Lerp(0, 1,  t);     }

앱스토어 결제 등록하기

http://tsubakit1.hateblo.jp/entry/2015/06/24/055130 유니티 일본 블로그 unity ray light https://www.google.co.kr/search?q=unity+dim+light&newwindow=1&hl=ko&biw=1366&bih=845&site=webhp&source=lnms&tbm=isch&sa=X&ved=0CAYQ_AUoAWoVChMI_aTg3ZqMyAIVhi2mCh1IxAI7#newwindow=1&hl=ko&tbm=isch&q=unity+light+ray&imgrc=e5oPkb0mQwOLLM%3A https://github.com/robertcupisz/LightShafts 레이 라이트 앱스토어 결제 등록하기 1. 빌드셋팅 ->  디벨롭먼트 빌드 체크 해제 -> AndroidManifest 오픈 -> < uses-permission   android:name = " com.android.vending.BILLING " /> 코드 추가 (결제 옵션 , 주석 달면 안됨) 빌드-> 구글 개발자콘솔 접속  -> apk 업로드 클릭  -> 결제 하려면 알파 테스트로 등록(apk 업로드) 2. 스토어 등록정보 작성 타이틀 * 표 표시된것은 반드시 작성한다. 3. 인앱상품 -> 새제품 추가 -> 제품 아이디 ->  아이템 1개당 한개 라이선스 테스트 이메일등록은 콤마로 구분해서 쓰면된다 ( 네이버 메일 불가 ) aa@gmail.com , bb@gmail.com 4. 인앱 에셋 설치 파일 주소 http://freebox.myqnapcloud.com:8080/share.cgi?ssid=0jkjiHr BMFONT - 비트맵 폰트 만들기 선생님 동영상 http://freebox.myqna

레이케스트 잘 정리된 글

http://interactiveno1.tistory.com/186  Ray ray = new Ray(transform.position, Vector3.back); // 레이케스트 포지션, 레이케스트 방향         RaycastHit hit;         if (Physics.Raycast(ray, out hit,5f))  // 레이케스트(ray,충돌체 정보,레이케스트 길이)         {             //rend.material.color = new Vector4(1, 1, 1, 0.1f);             Debug.Log(hit.transform.gameObject.name); // 받아온 충돌체 정보를 출력함         }

유니티 + 에프터이펙트 + 활용 파티클

https://www.youtube.com/watch?v=xmjntIQkfcs

거리측정

중심점에 위치한 게임 오브젝트 생성 플레이어와의 거리 측정 -> http://docs.unity3d.com/ja/current/ScriptReference/Vector3.Distance.html

큐브맵 uv

http://docs.unity3d.com/kr/current/Manual/class-Cubemap.html

캐릭터 콘트롤러 사용시 충돌 체크 방향 이동

오브젝트의 로컬 방향  transform.forward    Ray ray = new Ray(tr.position, transform.forward);             Vector3 dirr = ray.direction;             playerCtrl.Move(-transform.forward * 20f * Time.deltaTime);// 반대 방향으로 튕겨 나가게 함                          StartCoroutine(timer()); // 캐릭터 콘트롤로 사용시 충돌 체크 void OnControllerColliderHit(ControllerColliderHit hit) { if (hit.gameObject.tag == "cube") { Renderer rd = hit.gameObject.GetComponent<Renderer>(); rd.material.color = Color.red; // print(hit.gameObject.name); }