블로그 이미지
1인 개발자 (므쮸 컴퍼니) 개인 블로그 입니다. MMZZUU

카테고리

므쮸 컴퍼니 (22)
▣ Game (3)
▣ Unity 게임 만들기 (14)
▷ 메모 (1)
▷ 기획부터 출시까지 (8)
▷ 이슈! (5)
▣ 정보공유 (5)
Total
Today
Yesterday

일반적으로 컴퓨터에서 테스트 할 땐 잘되지만 모바일로 빌드 후 테스트를 하면


터치가 한번에 잘 되지 않는 경우가 있다.


일반적인 버튼은 괜찮은데 Scroll Rect에 자식으로 속해있는 경우

즉, 스크롤되는 오브젝트에서의 버튼이 On Click이 잘 되지않는다.


이 경우는 캔버스가 생성될 때 EventSystem 오브젝트도 같이 생성되는데


EventSystem 스크립트의 Drag Threshhold 값을 올려주면 된다.




[ 스크립트 ] 로 처리할 경우


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private const float inchToCm = 2.54f;
     
[SerializeField]
private EventSystem eventSystem = null;
     
[SerializeField]
private float dragThresholdCM = 0.5f;
//For drag Threshold
     
private void SetDragThreshold()
{
    if (eventSystem != null)
    {
        eventSystem.pixelDragThreshold = (int)(dragThresholdCM * Screen.dpi / inchToCm);
    }
}
  
  
void Awake()
{
    SetDragThreshold();
}
cs


dragThresholdCM = 0.5f;

이 수치가 터치한 지점으로 부터 0.5센티미터 정도는 밀려도 눌린 상태를 유지하겠다~ 뭐 이런 뜻이다

스크롤 내부에 있는 버튼들이 터치를 하더라도 스크롤이 살짝 밀리면서 눌린 상태가 해제되는 문제를 해결하기 위한 방법인 것이다.

 



Posted by MMZZUU
, |

저는 유니티로 게임을 제작할 때 


특별한 경우가 아니면 업데이트 버전관리나 여러측면에서 실수 할 가능성이 낮기에


프로젝트를 하나로 두고 프로젝트 내에서 각 플랫폼별 분기처리를 하는 형태로 처리합니다.


구글 Android에는 구글 플레이 게임 서비스 (이하 GPGS)를 사용하기 위해 플러그인을 사용하는데요


애플 iOS에서는 사용하지 않고 iOS자체 GameCenter를 사용하기에 GPGS를 빌드시에 포함시키지 않습니다.



무식한게 용감하다고...


이걸 업데이트때 마다 Android 빌드, iOS 빌드별로 파일을 삭제해준다거나 이런식으로 하다보니 쓸데없이 손이 많이 가더라구요.


플러그인 사용법을 꼼꼼히 좀 읽어 봤더라면 이런 개고생은 하지 않았어도 되는거였는데;;



각설하고 방법을 알려드리겠습니다.


빌드 할 때  (iOS) Player Settings > Scripting Define Symbols > NO_GPGS 추가


기존에 입력 되어있던 글자들 뒤에 새미콜론(;)으로 구분해주시고 NO_GPGS를 넣으시면 됩니다.




참 쉽죠?



이렇게 간단한 것을... 


여러분은 고생하지 마세요 ㅋㅋㅋ

Posted by MMZZUU
, |

게임을 시작하기 전 부분에서 프레임 속도를 세팅해 줍니다.



void Awake () {

Application.targetFrameRate = 60;

}



특히 iOS같은 경우는 기본 FrameRate가 30이 기본값이기 때문에 필히 해주어야 합니다.


이렇게 하고도 iOS는 안되는 경우가 있다는 이야기를 들었는데 (저는 잘됩니다만...)


그럴 땐 빌드한 XCODE 프로젝트를 열고 AppController.mm 파일을 열어



#define kFPS 30 이라고 된 부분이 있는지 확인합니다.



이부분을 



#define kFPS 60 이라고 수정 해 주시면 됩니다.



위의 셋팅값이 60 FPS로 렌더링 하는 셋팅값 입니다.



Posted by MMZZUU
, |

2017-02-15 기준


자~ 유니티로 게임을 만들려면 우선 유니티를 설치해야겠죠?


유니티 홈페이지 : https://unity3d.com/kr


위 링크주소를 클릭하면 홈페이지로 이동합니다.



 [ 지금 Unity 다운로드 ] 를 클릭하면





다운로드 할 수 있는 항목이 쭉 있습니다만~

저는 가난한 1인개발자이므로 무료버전을 다운받을 겁니다. ㅋㅋㅋ

Personal 라이센스의  [ 지금 다운로드 ] 를 꾹~ 클릭





고민없이 최신버전을 다운받고자 하시는 분은  [ 설치 프로그램 다운로드 ] 를 누르시면 됩니다.

현재는 5.5.1 버전이군요.


그리고 바로아래에 지금 다운받는 Personal라이센스에 대한 설명이 적혀 있습니다.

개발물을 상업적으로 출시해서 연간 총 수익이 미화로 10만 달러(화 약 1억1,440만 원)를 넘으면 Personal라이센스를 사용할 수 없다고 나옵니다.


일년에 1억이상 수익을 내는게 쉽지도 않지만...


혹시나!!! 설마!!! 말도안되는!!! 대박이나서 1억이상 버신다면~ 

다른 유료라이센스로 구매해서 사용해야 합니다~ ㅋㅋㅋ


유료라이센스를 구매하는 날이 왔으면 좋겠네요... ㅠㅠ




최신버전이 아닌 이전 버전을 다운받고 싶으신 분들은



화면 맨 아래로 스크롤을 내리고 Unity 이전버전을 누르시면





유니티 5, 4, 3 버전대까지 이전버전을 자유로이 다운로드 받으실 수 있습니다.




자~ 이제 해당버전을 선택하고 다운로드를 받습니다.

저는 5.4.1 버전을 다운받아 보겠습니다.

현재 진행중인 프로젝트가 5.4.1버전에서 만들고있어서요 ㅋㅋ

여러분은 최신버전을 받으세요~


제 사용운영체제가 윈도우라  [ 다운로드(Win) v  탭을 누르고 하단에서  Unity 설치 프로그램 를 눌러 다운로드를 시작합니다.




다운로드가 완료되면 파일을 확인하여



실행~!





자신있게 [ Next > ] 클릭!




라이센스 확인 체크하고 [ Next > ] 클릭!!!




운영체제가 64비트인지 32비트인지를 선택하고

[ Next > ] 를 클릭~


※간혹 64비트를 선택해서 설치하면 실행하면 오류나는 경우가 있습니다.

이럴땐 32비트로 설치하시면 됩니다.




저는 모바일 (안드로이드 , 아이폰)에 빌드할거라서

추가로 Android Build Support와 iOS Build Support를 체크했습니다.




저는 기본 설치 경로를 그대로~ [ Next > ] 를 클릭합니다.




마구 설치하기 시작합니다.




순조롭게 잘 설치되고있구요~




설치가 끝나고 [ Finish ] 를 클릭하시면~


설치를 완료하였습니다.


그럼 이제 열심히 게임만들러 유니티의 세계로~ 궈궈!!!!


수고하셨습니다. ㅎㅎ

Posted by MMZZUU
, |


# 사운드 / 오디오


1. 모바일에서 스테레오 및 고사양은 의미가 없다

  • wave, aiff : 44khz가 아니더라도 일반적으로 음성 영역에서는 22khz(절반용량)도 잘 동작, 특히 폭발음이나 충격음 등등 중저음 계열11khz(1/4용량)로도 잘 동작

  • mp3, ogg : 압축률을 96kbps 이하로 조정하여 낮춤


2. 사운드 파일을 임포트하면 기본적으로 3D 사운드로 설정이 된다

  • 모바일에서는 굳이 3D 사운드가 필요하지 않으므로 2D 사운드로 변경하자


3. 압축 사운드 (mp3, ogg), 비압축 사운드 (wav, aiff) 구별

  • 순간적인 효과음, 이펙트 (비압축 사운드) : wav, aiff

  • 배경 음악 (압축 사운드) : mp3, ogg (경우에 따라 시작시 딜레이가 발생 할 수 있기에 게임에 영향을 가장 덜 받을 수 있는 배경음악에 사용) 



# 그래픽 / 텍스쳐


1. 배경 크기는 최종 스크린사이즈에 맞게

  • 제작물에 따라 다르겠지만 현재 아이폰 7+ 의 경우 1920 X 1080으로, 그보다 큰 배경은 사실상 의미가 없습니다.

  • 몇몇 고해상도가 필요한 경우 외에는 1/2 X 1/2 또는 2/3 X 2/3 사이즈로 사용해도 충분합니다.


2. 캐릭터 최종크기를 고려한 사이즈

  • 화면에서 캐릭터가 차지하는 사이즈를 고려하여 굳이 화면해상도 크기만한 텍스쳐를 만들 필요는 없겠죠.

  • 캐릭터의 땀구멍까지 보일정도로 Zoom In하는 연출이 많지않다면 주로 화면에서 차지하는 비율에 맞게 텍스쳐사이즈를 줄여도 큰 차이를 보이지 않습니다.


3. iOS 빌드에서 지원하는 PVRTC 압축 포멧을 적극 활용

  • 빌드에서 iOS로 플랫폼을 바꾸고 나면, 임포트된 모든 텍스쳐 메뉴에서 PVRTC압축모드를 사용 할 수 있게 됩니다.

  • 빌드 메뉴를 변경한ㄴ 후 모든 텍스쳐를 제대로 설정하게 되면 최적화면에서 꽤 이득을 볼 수 있습니다. (20~30% 감소효과)

  • 가로세로 크기는 2의 배수(32X32 , 64X64, 128X128 ...) 로 맞춰야합니다. 맞지않을 경우 다시 사이즈조정하는 처리를 하므로 쓸데없는 처리공정이 생깁니다.

  • 알파값이 필요없는 텍스쳐는 거기에 맞게 압축모드를 설정하면 용량이 더 효과적으로 줄어듭니다.

Posted by MMZZUU
, |

모바일 플렛폼 작업 시 유의사항

  1. 메쉬 정점 수 ( 최대한 소프트 엣지로 제작 )
  2. 단순 셰이더 ( 퍼픽셀 연산은 자제 )
  3. 알파블렌딩 피하기 ( 이펙트 및 GUI 제작시 신경쓰기 )
  4. 기기별 최적의 텍스쳐 포맷 사용
  5. Reference Type 사용 자제 ( 최대한 Value Type, struct사용 )
  6. Conroutine 사용
  7. Update보다 FixedUpdate사용
  8. 자주 연산이 불필요한 루틴은 InvokeRepeating 사용
  9. Light Map Bake 반드시 필수
  10. Application.targetFrameRate 옵션 필수 ( iOS )
  11. VSync Off 옵션 필수
  12. 자주사용하는 지역변수는 전역변수 선언 사용
  13. Object Pool은 선택이 아닌 필수
  14. Drawcall 체크(100 이하 권장)


Posted by MMZZUU
, |

1. 애드몹 모바일용 유니티 플러그인(Google Mobile Ads Unity Plug-in)을 다운로드



다운로드 링크https://github.com/googleads/googleads-mobile-unity/releases/tag/v2.2.1


사용이 편리한 유니티 패키지로 다운로드



2. 패키지를 Import   스크립트를 생성

패키지를 실행하여 Import 한 뒤에 빈 오브젝트를 만들고 

AdmobManager.cs 스크립트를 생성해 오브젝트에 붙여줍니다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using UnityEngine;
using System.Collections;
using UnityEngine.Advertisements;
using GoogleMobileAds.Api;
 
public class AdmobManager : MonoBehaviour {
    public static AdmobManager instance { get; set; }
 
    public string admobAndroidUnitId;
    public string admobIosUnitId;
    public AdPosition adPosition;
 
    private BannerView admobBanner;
    private AdRequest admobRequest;
 
    void Start () {
        if (Application.platform == RuntimePlatform.Android) {
            // Android
            admobBanner = new BannerView(admobAndroidUnitId, AdSize.Banner, adPosition);
        } else if (Application.platform == RuntimePlatform.IPhonePlayer) {
            // iOS
            admobBanner = new BannerView(admobIosUnitId, AdSize.Banner, adPosition);
        }
 
        if (admobBanner != null) {
            admobRequest = new AdRequest.Builder().Build();
            admobBanner.LoadAd(admobRequest);
            admobBanner.Show();
        }
    }
}
cs


admobAndroidUnitId : 애드몹 Android 유닛 아이디

admobIosUnitId : 애드몹 iOS 유닛 아이디

adPosition : 배너 위치



3. 모바일로 테스트

에디터나 PC테스트로는 확인 할 수가 없으므로 모바일로 빌드하여 테스트 합니다.



Posted by MMZZUU
, |

1. 구글 가입하기

  • 애드몹을 사용하기 위해선 우선 구글계정이 필요합니다. 구글에 가입하세요


2. 구글 애드몹 가입하기

  • 에드몹 홈페이지에서 가입하기를 누르시고 구글계정으로 로그인 해주세요

  • [ + 새로운 앱에서 수익 창출 ] 을 누르고 광고를 생성합니다

  • ( 1 ) 앱 선택     >     앱 직접 추가

  • 앱 이름을 적고 플랫폼을 선택합니다 (Android, iOS)    >     [ 앱 추가 ] 클릭

  • ( 2 ) 광고 형식 선택 및 광고 단위 이름 지정     >     원하는 광고형태를 선택 (저는 '배너'를 선택하였습니다)

  • '광고 유형'은 텍스트, 이미지 두가지 모두를 선택하고 자동새로고침 빈도만 '120'초로 수정 했습니다 

  • 새로고침 될때 게임에 랙이 발생할 수 있어서 최대한 새로고침 시간을 길게 했습니다

  • '광고 단위 이름'은 자신이 알아보기 쉽게 적습니다 (저는 "텍스트/이미지 배너 120" 이라고 지었습니다)

  • ( 3 ) Firebase 애널리틱스 설정(선택사항) : 건너뛰기 합니다. 이부분은 선택사항인데 좀 더 세밀한 통계등을 확인 할 수 있다고 하는데 추가 작업이 필요한것 같아 선택하지 않습니다

  • ( 4 ) [ 확인 ] 하여 광고 생성을 완료합니다


3. Android SDK설치 및 경로설정

  • 자신의 OS에 맞는 안드로이드 SDK를 설치 하고 경로 설정을 해주어야 합니다

  • Unity   >   Preferences   >   External Tools   >   SDK   >   Android SDK 에 경로를 지정해주시면 됩니다


Posted by MMZZUU
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함