블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2795)
Unity3D (852)
Programming (478)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (61)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

유니티에서 안드로이드 빌드 할려고 할 때

Error building Player: CommandInvokationFailure: Unable to merge android manifests. See the Console for more details

이런 에러가 뜨면서 안되는 경우 안에 내용을 살펴 보면

Main manifest has <uses-sdk android:targetSdkVersion='21'>but library uses targetSdkVersion='23' 이런 내용이 있다

무슨 뜻 이냐면 자신의 컴에 깔린 안드로이드 sdk 최신 버전은 21인데 프로젝트안에 어떤 플로그인에서 안드로이드 타겟버전을 23을 셋팅 되어서 빌드를 못한다는 뜻임.

 

그냥 안드로이드sdk버전업만 시키면 빌드가 다시 잘된다.!!



출처: http://jaehogame.tistory.com/entry/유니티-Error-building-Player-CommandInvokationFailure-Unable-to-merge-android-manifests-See-the-Console-for-more-details [재호와 함께하는 게임프로그래밍~~ㅋㅋ]

반응형
Posted by blueasa
, |



1. 'Alt + H'

2. 찾을 내용 : ,

3. 검색 모드-확장(\n, \r, \t, \0, \x...) 체크

4. 바꿀내용 : \n

5. 모두 바꾸기(A) 클릭

6. 줄바꿈 완료



[출처] https://okky.kr/article/263999

반응형
Posted by blueasa
, |

개인적인 학습 목적으로 번역된 강좌글입니다. 

 

제 블로그로 링크가 되어 있는것은, 이쪽으로 번역글을 옮기는 과정이 번거롭고

비효율적이기 때문에 그렇고, 결코 블로그 홍보를 목적으로 하지 않습니다.

 

다른 곳에 퍼가신다면 일본어 원문 링크를 꼭 표기하여 주시기 바랍니다.

 

유니티 에디터에서 기본 제공되는 에디터 UI에서 더 나아가 직접 커스터마이즈하고

툴을 만들기 위해 필요한 정보들을 담고 있습니다.

 

원문

http://anchan828.github.io/editor-manual/web/index.htmlViewer

 

1장 에디터 확장에서 사용하는 폴더Viewer

2장 표준에서 사용할 수 있는 에디터 확장기능Viewer

3장 데이터 저장Viewer

4장 ScriptableObjectViewer

5장 SerializedObject에 대해서Viewer

6장 EditorGUIViewer

7장 EditorWindowViewer

8장 MenuItemViewer

9장 CustomEditorViewer

10장 PropertyDrawerViewer

11장 ProjectWindowUtilViewer

12장 Undo에 대해서Viewer

13장 다양한 이벤트의 콜백Viewer

14장 ReorderbleListViewer

15장 ScriptTemplatesViewer

16장 Gizmo(기즈모)Viewer

17장 Handle(핸들)Viewer

18장 HierarchySortViewer

19장 GUI를 직접 만들기Viewer

20장 OverwriterViewer

21장 파티클을 제어하기Viewer

22장 SpriteAnimationPreview(스프라이트 목록의 표시)Viewer

23장 SpriteAnimationPreviwe(스프라이트 애니메이션)Viewer

24장 씬 Asset에 스크립트를 AttachViewer

25장 시간을 제어하는 TimeControlViewer

26장 AssetDatabaseViewer

27장 HideFlagsViewer

28장 AssetPostprocessorViewer(완)



[출처] http://lab.gamecodi.com/board/zboard.php?id=GAMECODILAB_Lecture&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=hit&desc=asc&no=477

반응형
Posted by blueasa
, |


[Free Asset] https://assetstore.unity.com/packages/tools/utilities/keystore-helper-58627


using UnityEngine;
using UnityEditor;
using System.IO;
 
[InitializeOnLoad]
public class PreloadSigningAlias
{
 
    static PreloadSigningAlias ()
    {
        PlayerSettings.Android.keystorePass = "KEYSTORE_PASS";
        PlayerSettings.Android.keyaliasName = "ALIAS_NAME";
        PlayerSettings.Android.keyaliasPass = "ALIAS_PASSWORD";
    }
 
}



[출처] https://forum.unity.com/threads/android-keystore-passwords-not-saved-between-sessions.235213/

반응형
Posted by blueasa
, |


[MenuItem("AssetBundles/Set Asset Bundle From File Name",false, 0)]
static void SetAssetBundlesFromFileNames()
{
	if (Selection.assetGUIDs.Length > 0) {
		foreach (ObjectassetinSelection.objects) {
			string path = AssetDatabase.GetAssetPath(asset);
			AssetImporter assetImporter = AssetImporter.GetAtPath(path);
			assetImporter.assetBundleName = asset.name;
			Debug.Log(Selection.assetGUIDs.Length + " Asset Bundles Assigned");
		}
	} else {
		Debug.Log ("No Assets Selected");
	}
}



[출처] https://forum.unity.com/threads/set-asset-bundle-name-form-editor-menu-item-script.333297/

반응형
Posted by blueasa
, |

앱 실행 시, 타 앱(멜론이나 벅스뮤직 등)의 백그라운드에서 재생되는 음원을 끄게 할 수 없냐고 말이나와서 권한 문제로 안될 줄 알았는데..

유니티 셋팅에 보니 PlayerSettings-Other Settings에 Mute Other Audio Sources 옵션이 있다.


켜주니 타 앱 사운드가 잘 꺼진다.


  [Android 주의사항]

Android Marshmallow (6.0) 이상은 READ_PHONE_STATE permission을 추가해줘야 된다고 한다.




[출처] https://stackoverflow.com/questions/39080989/unity-app-stops-background-music


[참조] https://docs.unity3d.com/ScriptReference/PlayerSettings-muteOtherAudioSources.html

[참조] http://jwandroid.tistory.com/153

반응형
Posted by blueasa
, |

안드로이드 권한(Permisstion) 종류


사이트에가서 권한에 대한 정리를 해보았습니다. 짧은 영어로 해석한거라 의미가 애매하네요.

정확한 의미, 언제 사용 하는지 등을 아시는분은 댓글좀 달아주세요..


출처 : http://developer.android.com/reference/android/Manifest.permission.html


Constants
 ACCESS_CHECKIN_PROPERTIES

체크인데이터베이스의 속성테이블의 

읽고 쓰기 권한

 ACCESS_COARSE_LOCATION

코드(coarse)위치 권한(Cell-ID, WIFI)

gps사용시 선언.

 ACCESS_FINE_LOCATION파인위치(find  location) 허용(gps)
gps사용시 선언.
 ACCESS_LOCATION_EXTRA_COMMANDS추가적인 위치 제공(?)
gps사용시 선언해야함.
 ACCESS_MOCK_LOCATION

테스트용 mock 위치 제공자 생성
gps사용시 선언해야함.

 ACCESS_NETWORK_STATE네트워크 정보에 접근
 ACCESS_SURFACE_FLINGER하위 수준의 서페이스핑거를 사용
 ACCESS_WIFI_STATEwifi 정보에 접근
 ACCOUNT_MANAGERAllows applications to call into 
AccountAuthenticators.
 ADD_VOICEMAIL음성 이메일 추가 권한

AUTHENTICATE_ACCOUNTSAllows an application to act as 
an AccountAuthenticator for 
the AccountManager
 BATTERY_STATS

베터리 상태 권한

 BIND_APPWIDGET 
 BIND_DEVICE_ADMIN 
 BIND_INPUT_METHOD 
 BIND_REMOTEVIEWS 
 BIND_TEXT_SERVICE 
 BIND_VPN_SERVICE
 BIND_WALLPAPER

Live WallPaper를 서비스에서 

돌릴때 사용하였음.

 BLUETOOTH블루투스
 BLUETOOTH_ADMIN

블루투스 어드민

 BRICK

very dangerous!

 BROADCAST_PACKAGE_REMOVED제거된 app 패키지에 대한 
노티 브로드케스트
 BROADCAST_SMS

SMS 관련 권힌

 BROADCAST_STICKYbroadcast sticky intents.
 BROADCAST_WAP_PUSHAllows an application to broadcast 
a WAP PUSH receipt notification
 CALL_PHONE

전화 통화


CALL_PRIVILEGED

전화 통화

긴급통화 포함

 CAMERA

카메라 권한

 CHANGE_COMPONENT_ENABLED_STATE

CHANGE_CONFIGURATION

Configuration 관련 권한

 CHANGE_NETWORK_STATE

인터넷(네트워크) 권한

 CHANGE_WIFI_MULTICAST_STATEAllows applications to enter 
Wi-Fi Multicast mode
 CHANGE_WIFI_STATEWIFI 사용 권한
 CLEAR_APP_CACHE설치된 앱 캐쉬 
삭제 권한
 CLEAR_APP_USER_DATA유저 데이터 삭제 권한
 CONTROL_LOCATION_UPDATES

위치정보 갱신 권한
gps사용시 선언

 DELETE_CACHE_FILES캐시파일 제거권한
 DELETE_PACKAGES패키지 삭제 권한
 DEVICE_POWERAllows low-level access 
to power management
 DIAGNOSTIC

Allows applications to RW to 
diagnostic resources.

 DISABLE_KEYGUARDAllows applications to 
disable the keyguard
 DUMP

EXPAND_STATUS_BAR상태표시줄 확장 권한
 FACTORY_TESTRun as a manufacturer test 
application, running as the 
root user.
 FLASHLIGHT플래시라이트 권한
 FORCE_BACKAllows an application to force 
a BACK operation on whatever 
is the top activity.
 GET_ACCOUNTS
 GET_PACKAGE_SIZE패키지 사용 공간 관련 권한
 GET_TASKS태스트 관련 권한
 GLOBAL_SEARCH

HARDWARE_TESTAllows access to 
hardware peripherals.
 INJECT_EVENTS

INSTALL_LOCATION_PROVIDER

INSTALL_PACKAGES패키지설치 권한
 INTERNAL_SYSTEM_WINDOW

INTERNET인터넷 권한
 KILL_BACKGROUND_PROCESSESAllows an application to call 
killBackgroundProcesses(String).
 MANAGE_ACCOUNTS

MANAGE_APP_TOKENSAllows an application to manage 
(create, destroy, Z-order) 
application tokens in the 
window manager.
 MASTER_CLEAR
 MODIFY_AUDIO_SETTINGS오디오 관련 권한
 MODIFY_PHONE_STATE폰상태 관련 권한
 MOUNT_FORMAT_FILESYSTEMS파일 시스템 권한
 MOUNT_UNMOUNT_FILESYSTEMS파일 시스템 권한
 NFCNFC관련 권한
 PERSISTENT_ACTIVITYThis constant is deprecated. 
 PROCESS_OUTGOING_CALLS

전화 발신 체크 권한

 READ_CALENDAR

캘린더 관련 권한

 READ_CONTACTS주소록 관련 권한
 READ_FRAME_BUFFER프레임 버퍼 관련 권한

READ_HISTORY_BOOKMARKS웹 즐겨찾기 등 권한
 READ_INPUT_STATE입력 상태 관련 권한(키보드)
 READ_LOGS로그 관련 권한

READ_PHONE_STATE폰상태 관련 권한
 READ_PROFILE사용자 프로파일 관련 권한
 READ_SMSSMS문자 관련 권한
 READ_SOCIAL_STREAM
 READ_SYNC_SETTINGS
 READ_SYNC_STATS
 REBOOT재부틱 관련 권한
 RECEIVE_BOOT_COMPLETED부팅완료 관련 권한
 RECEIVE_MMSMMS 수신 관련 권한
 RECEIVE_SMSSMS(문자) 수신 관련 권한
 RECEIVE_WAP_PUSHWAP 푸시 권한
 RECORD_AUDIO

오디오 녹음 권한

 REORDER_TASKS태스크 z오더
 RESTART_PACKAGESThis constant is deprecated.

SEND_SMS

SMS(문자)보내기 권한

 SET_ACTIVITY_WATCHER

액티비티 감시등 권한

 SET_ALARM알람 관련 권한
 SET_ALWAYS_FINISH

액티비티 관리(종료) 권한

 SET_ANIMATION_SCALEModify the global animation 
scaling factor.
 SET_DEBUG_APPConfigure an application 
for debugging.
 SET_ORIENTATION화면 방향 지정 권한

SET_POINTER_SPEEDAllows low-level access to 
setting the pointer speed.
 SET_PREFERRED_APPLICATIONSThis constant is deprecated.
 SET_PROCESS_LIMIT실행 프로세스 제한 권한
 SET_TIME

시간 관리 권한

 SET_TIME_ZONE타임존 관리 권한
 SET_WALLPAPER배경화면 관리 권한
 SET_WALLPAPER_HINTS배경화면 힌트 관리 권한

SIGNAL_PERSISTENT_PROCESSESAllow an application to request that
 a signal be sent to all persistent 
processes
 STATUS_BAR

상태표시줄 관련 권한

 SUBSCRIBED_FEEDS_READ

SUBSCRIBED_FEEDS_WRITE
 SYSTEM_ALERT_WINDOW

UPDATE_DEVICE_STATSAllows an application to update 
device statistics.
 USE_CREDENTIALSAllows an application to request 
authtokens from the AccountManager
 USE_SIPAllows an application to use 
SIP service
 VIBRATE

진동 관련 권한

 WAKE_LOCK화면 켜기 관련 권한(알람.)

WRITE_APN_SETTINGSAPN 쓰기 관련 권한
 WRITE_CALENDAR캘린더 쓰기 관련 권한

WRITE_CONTACTS주소록 쓰기 관련 권한
 WRITE_EXTERNAL_STORAGE외부저장장치 관련 권한
 WRITE_GSERVICES

Allows an application to modify 
the Google service map.

 WRITE_HISTORY_BOOKMARKS

웹 즐겨찾기등 쓰기 권한

(not read)

 WRITE_PROFILE

사용자프로필쓰기 권한

not read

 WRITE_SECURE_SETTINGS
 WRITE_SETTINGS시스템 설정 쓰기 권한
 WRITE_SMSSMS(문자) 쓰기 권한
 WRITE_SOCIAL_STREAM

WRITE_SYNC_SETTINGS



출처: http://jwandroid.tistory.com/153 [초보 플밍지기]

반응형
Posted by blueasa
, |

[TroubleShooting]


[에러메시지]

NotSupportedException: .... System.Net.WebRequest.GetCreator (System.String prefix) System.Net.WebRequest.Create (System.Uri requestUri)


PC/iOS에서는 잘 되는데 Android에서 위와 같은 NotSupportedException이 난다.(현재 Unity v5.6.5f1)

검색해보니 게임코디에 아래와 같은 답변을 해주신 분이 있다.



  비회원: 
kimsama

NotSupportedException: .... System.Net.WebRequest.GetCreator (System.String prefix) System.Net.WebRequest.Create (System.Uri requestUri) 모바일에서 위의 에러로 인해 HttpWebReaquest 를 사용하지 못하는 경우라면 여기 링크의 내용 참고하시기 바랍니다. http://www.vovchik.org/blog/13001 간단하게 우회하는 방법이 나와 있습니다.

[출처] http://lab.gamecodi.com/board/zboard.php?id=GAMECODILAB_QnA_etc&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=2617



그래서 링크(http://www.vovchik.org/blog/13001)에서 말해준 대로 Wrapping을 해서 Android에서 돌려보니 잘된다!!

(kimsama님 감사합니다!)


내가 추가 및 수정한 소스는 아래와 같다.


// Wrapper Class
using System;
using System.Net;

public class HttpRequestCreator : IWebRequestCreate 
{
	public WebRequest Create(Uri uri)
	{
		return new HttpWebRequest(uri);	
	}
}


    //Get size of the asset
    HttpRequestCreator cHttpRequestCreator = new HttpRequestCreator();            // modify
    System.Net.WebRequest req = cHttpRequestCreator.Create(new Uri(assetURL));    // modify
    req.Method = "HEAD";

    float ContentLength;
    using (System.Net.WebResponse resp = req.GetResponse())
    {
        float.TryParse(resp.ContentLength.ToString(), out ContentLength);
    }

    while (!download.isDone)
    {
        if (progressBar != null)
	    {
            progressBar.LabelInformations = "Downloading Assets";
            progressBar.Progress = download.progress;
            progressBar.AssetSize = ContentLength / 1000000; //(Mb)
	    }
	    yield return null;
    }






- CDN에 있는 파일 사이즈를 어떻게 알 수 없나 하고 찾다가 테스트 해보고 잘 되길래 올려 놓음.

  (PC/iOS는 잘되는데 Android가 에러나서 위와 같이 고침)

    1. //Get size of the asset
    2. System.Net.WebRequest req = System.Net.HttpWebRequest.Create(assetURL);
    3. req.Method = "HEAD";
    4. float ContentLength;
    5. using (System.Net.WebResponse resp = req.GetResponse())
    6. {
    7. float.TryParse(resp.ContentLength.ToString(), out ContentLength);
    8. }
    9. while (!download.isDone)
    10. {
    11. if (progressBar != null)
    12. {
    13. progressBar.LabelInformations = "Downloading Assets";
    14. progressBar.Progress = download.progress;
    15. progressBar.AssetSize = ContentLength / 1000000; //(Mb)
    16. }
    17. yield return null;
    18. }


[출처] https://answers.unity.com/questions/1035361/get-size-of-an-online-assetbundle-and-progress-in.html




반응형
Posted by blueasa
, |


[링크] https://github.com/JanKallman/EPPlus


반응형
Posted by blueasa
, |

[주의] 레지스트리를 수정하는 내용이니 주의해서 사용하세요.



C# 으로 OleDB를 이용해서 Excel을 읽어 들이고, Sqlite(.db)로 변환하는 Converter를 만들어서 사용하는 데


긴 문자열을 넣었더니 잘려서 컨버팅 되길래 확인해보니 255 글자 제한이 걸려 있다.


검색해서 확인해보니 여러가지 해결 방법들이 포스팅 돼 있는데 조금씩 안맞아서 확인해보고 정리해서 올려 놓는다.



[레지스트리 수정으로 255 글자 제한 풀기]


아래 버전 및 OS bit에 맞는 레지스트리를 찾아가서 TypeGuessRows 값을 0으로 바꾸면 된다.

(참고: 개발에 사용된 Excel 버전임. 윈도우 설치된 엑셀 버전이 아님)

(기본 값은 8인데, DataSet을 만들 때 기본으로 설정 된 윗 8줄에 있는 가장 큰 글자수를 DataType 길이로 잡는다고 한다.

 기본 글자 제한은 255자이고, 0으로 바꾸면 전체를 검사해서 DataType 길이로 잡는다고 함.)


[주의] 성능상의 이유로 글자수를 제한(Default:8) 하는 거라고 하니 감안해서 사용할 사람만 하기를..


  [Windowns 32bit]

Excel 2000, 2003 (xls)

  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel

  (Excel 97 = 3.5)


- Excel 2013 (xlsx)

  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Access Connectivity Engine\Engines\Excel

  (2016 = 16.0, 2013 = 15.0, 2010 = 14.0, 2007 = 12.0)


  [Windowns 64bit]

Excel 2000, 2003 (xls)

  HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel

  (Excel 97 = 3.5)


- Excel 2013 (xlsx)

  HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Access Connectivity Engine\Engines\Excel

 (2016 = 16.0, 2013 = 15.0, 2010 = 14.0, 2007 = 12.0)



[레지스트리 파일 다운로드]

Fix_255_Char_32bit_Excel_2000_2003.reg

Fix_255_Char_32bit_Excel_2007.reg

Fix_255_Char_32bit_Excel_2010.reg

Fix_255_Char_32bit_Excel_2013.reg


Fix_255_Char_64bit_Excel_2000_2003.reg

Fix_255_Char_64bit_Excel_2007.reg

Fix_255_Char_64bit_Excel_2010.reg

Fix_255_Char_64bit_Excel_2013.reg



    [Excel 데이터 수정으로 255 글자 제한 풀기] (확인 안해봤음)


- 위에도 적었지만 DataSet을 만들 때 기본으로 설정 된 윗 8줄에 있는 가장 큰 글자수를 DataType 길이로 잡는다고 한다.

  8줄 이내에 255 글자 이상의 사용하지 않는 Dummy 데이터를 넣으면 해결 된다고 함. 




[참조] http://www.todal.net/241?category=367351

[참조] http://it-developer.tistory.com/427

[참조] http://lemondory.tistory.com/129

[참조] http://ariswear.tistory.com/37

반응형
Posted by blueasa
, |