'Development/Unity3d'에 해당되는 글 27건

  1. 2022.02.17 Unity EditorWindow 실시간 갱신 하는 방법
  2. 2021.08.03 Unity 카메라 이동 시 게임오브젝트 따라가는 UI 흔들리는 현상 해결법
  3. 2021.06.18 AAPT unexpected elelemt <queries> 에러
  4. 2021.01.25 Unity Android sdk tools version 0.0 < 26.1.1 에러
  5. 2019.09.27 Unity float.Parse 함수 FormatException 해결방법
  6. 2019.06.03 빌드 시 android.support.v7.widget.CardView 를 찾을 수 없을 때
  7. 2019.05.23 Unity 3D READ_PHONE_STATE 권한 제거하기 1
  8. 2018.09.11 Unity multidex 활성화 방법
  9. 2018.09.11 Unity Error while saving blame file 에러 발생 시
  10. 2017.03.03 Unity sending message header failed
  11. 2016.10.24 APK 빌드시 컴파일러 오류
  12. 2016.09.22 유니티 uGUI 에서 UI 의 크기 알아내기
  13. 2016.03.29 유니티 타이젠 빌드 방법
  14. 2015.12.21 Unity3d Admob 추가시 AdSize 를 찾을 수 없는 문제
  15. 2015.12.11 Unity3d 구글 플레이 서비스 연동 에러 해결방법
  16. 2014.05.07 에셋서버가 실행되지 않을때
  17. 2014.04.07 유니티 어플 설치 후 resume 시 팅김현상
  18. 2014.03.25 유니티에서 이미지 파일 로드하기 1
  19. 2014.03.24 Admob InterstitialAd 전면광고
  20. 2014.03.18 유니티 전처리기 #define
  21. 2014.03.17 NGUI 에서 UITexture가 스크롤 영역 밖에서 보일 때
  22. 2014.02.14 유니티에서 p4merge 를 인식하지 못할 때
  23. 2013.10.09 Unity3d 특정 게임오브젝트 충돌 무시 방법 2
  24. 2013.10.02 Unity3d 안드로이드 게입 개발시 터치와 마우스 입력 동시 사용 방법
  25. 2013.09.30 Unity3d 안드로이드 Keycode
  26. 2013.09.27 Unity3d 부모 게임오브젝트 찾기
  27. 2013.09.27 Unity3d random 함수

EditorWindow는 마우스 또는 입력 이벤트가 발생할때만 갱신 되는데 매뉴얼 갱신 하는 방법은 Repaint() 함수를 호출해주면 해결 된다.

public class CustomWIndow : EditorWindow
{
    void Update()
    {
        Repaint();
    }
}

 

Posted by 후미카
:

특정 오브젝트를 따라다니는 UI를 구현 했는데 카메라가 고정이 아닌 이동되는 카메라인 경우 카메라 이동과 오브젝트의 이동의 싱크가 일치하지 않아 UI가 흔들리는 현상이 발생 할 수 있습니다.

이경우 Camera의 Rendering delegate 를 이용하면 해결 가능 합니다.

 

URP의 경우 RenderPipelineManager.beginCameraRendering 을 이용하며,

그 외의 경우 Camera.onPreRender 함수를 이용하면 됩니다.

Posted by 후미카
:

Unity Android 빌드 중 아래와 같은 에러가 발생하며 빌드가 중지되는 경우가 있습니다.

이때는 그래들 버전을 3.4.3 이상으로 맞춰주면 됩니다.

AAPT: error: unexpected element <queries> found in <manifest>.

mainTemplate.gradle 에 buildscript, depencencies가 없는 경우 baseProjectTemplate.gradle을 수정해줘야 합니다.

Edit>Preferences>External Tools안에 있는 Gradle 경로 상단에 있는 GradleTemplates폴더에 baseProjectTemplate.gradle 파일 내부에 있는 그래들 버전을 변경해주면 됩니다.

Posted by 후미카
:

안드로이드 빌드 중 아래 에러가 발생한 경우 

SDK 폴더 > Tools 폴더에 있는 Package.mxl 파일에서 obsolete="true" 로 되어있는 값을 obsolete="false" 로 변경 뒤 유니티를 재실행, 빌드하면 해결 된다.

 

Android SDK is outdated

sdk tools version 0.0 < 26.1.1

Posted by 후미카
:

Unity iOS 에서 float.Parse 시도 시 특정 언어에서 FormatException 에러가 발생 하는 경우가 있습니다.

 

이 경우 Parse 옵션에 CultureInfo.InvariantCulture 를 추가 해 주시면 됩니다.

 


float.Parse("1.0", System.Globalization.CultureInfo.InvariantCulture);

Posted by 후미카
:

implementation 'com.android.support:cardview-v7:28.0.0-alpha1'

 

위와 같이 Gradle 에 추가 하거나 cardview 서포트 라이브러리를 추가 해주면 됩니다.

Posted by 후미카
:

Unity 3d에서 APK 파일 빌드 시 READ_PHONE_STATE, WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE 등의 퍼미션이 자동으로 추가되는 경우가 있습니다.

이 퍼미션 들을 제거하는 방법은 아래와 같이 Manifest 에 추가 하면 됩니다. 

 

<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove" />

Posted by 후미카
:

유니티에서 빌드를 하다보면 참조 함수 개수가 너무 많아서 빌드에 실패하는 경우가 있습니다.


에러 내용은 아래와 같습니다.



Conversion to Dalvik format failed:

Unable to execute dex: method ID not in [0, 0xffff]: 65536


trouble writing output:

Too many field references: 131000; max is 65536.

You may try using --multi-dex option. 


위 두 에러 모드 멀티덱스 관련 에러 입니다.

해결 방법은 함수의 개수를 줄이거나 멀티덱스를 활성화 하는 방법이 있습니다.


Unity 에서 멀티덱스를 활성화 하는 방법은 아래와 같습니다.



1. Build Setting 에서 Build System 을 Gradle 로 변경



2.mainTemplate.gradle 생성


3. gradle의 defaultConfig에 multiDexEnabled true 추가



4. min API Level 20 이하인 경우 manifest 와 gradle 에 아래와 같이 추가 




Posted by 후미카
:

Unity 에서 빌드를 하다보면 Error while saving blame file 에러가 발생 하는 경우가 있다.

이런 경우 Manifest 파일에 xmlns:tools="http://schemas.android.com/tools 를 추가해 주는걸로 간단하게 해결 할 수 있다.






Posted by 후미카
:

유니티 콘솔에서 sending message header failed 라는 Worning 로그가 계속 나오는 경우가 있다.


이 경우 Window - profiler - Active Peofiler 탭에서 Editor 를 선택 해 주면 된다.



Posted by 후미카
:

Failed to compile resources with the following parameters:

-bootclasspath "C:/Users/USER/AppData/Local/Android/sdk\platforms\android-25\android.jar" -d "D:\Workspace_Unity\example\Temp\StagingArea\bin\classes" -source 1.6 -target 1.6 -encoding UTF-8 "com\example\example\R.java" "com\example\plugins\R.java"

warning: C:\Users\example-SB\AppData\Local\Android\sdk\platforms\android-25\android.jar(java/lang/Object.class): major version 52 is newer than 51, the highest major version supported by this compiler.

  It is recommended that the compiler be upgraded.

warning: C:\Users\example-SB\AppData\Local\Android\sdk\platforms\android-25\android.jar(java/lang/AutoCloseable.class): major version 52 is newer than 51, the highest major version supported by this compiler.

  It is recommended that the compiler be upgraded.

2 warnings




위와 같은 에러가 발생하며 apk 파일 생성이 되지 않는 경우 Java 의 버전을 올려주면 해결 됩니다.

Posted by 후미카
:

uGUI 에서 UI를 stretch 로 설정하면  sizeDelta 로는 정상적인 사이즈가 나오지 않습니다.


이 때 RectTransform 에 있는 rect 를 이용하면 해당 UI 의 사이즈를 알아 낼 수 있습니다.


RectTransform rectTransform;
rectTransform = GetComponent<RectTransform>();
float width = rectTransform.rect.width;
float height = rectTransform.rect.height;


Posted by 후미카
:

타이젠 2.4 rev4,  유니티 5.3.4 f1 버전에서 타이젠 빌드시 빌드가 되지 않는 오류가 있는데 수동으로 tpk 파일을 생성 하는 방법 입니다.



타이젠 빌드시 

UnityException: Build Failure!

Failed to sign and package the application. Check the editor log for more details.

라는 에러메세지와 함께 생성이 되지 않는 경우



[UNITY_PROJECT]/Temp/StagingArea/build 


유니티 프로젝트에 있는 위 폴더명을 build 에서 bin 폴더로 바꿔줍니다.

그다음 StagingArea 폴더 내용을 zip 파일로 압축 한 뒤, 확장자명을 tpk 파일로 변경해줍니다.


( zip 파일의 최상단에는 bin, data, lib 등의 폴더가 있어야 됩니다. )


다음은 생성된 tpk 파일을 사이닝 하는 작업입니다.


[TIZEN_SDK_ROOT]/tools/ide/bin/tizen.sh package -- [TPK_FILE_ROOT] -t tpk -s [TPK_ALIAS]


터미널에서 위와 같은 형태의 명령어를 사용하면 됩니다.

[TIZEN_SDK_ROOT] - 타이젠  sdk 위치

[TPK_FILE_ROOT] - tpk 파일 경로

[TPK_ALIAS] - 서명할 인증서 alias


ex)

/Users/developer/tizen-sdk/tools/ide/bin/tizen.sh package -- /Users/developer/Apk/mygame.tpk -t tpk -s mytestalias


윈도우의 경우 tizen.sh 가 아닌 tizen.bat 파일을 사용하면 가능 할 것 같습니다.



Posted by 후미카
:

유니티 애드몹 추가시 AdSize 를 찾을 수 없을 때 Google Play Service 를 추가 해 주면 된다.


해결방법

Assets/GooglePlayGames/Editor/BackgroundResolution.cs 파일의 67번 라인에 아래 소스를  추가해 준다.

svcSupport.DependOn("com.google.android.gms",
                                "play-services-ads",
                                PluginVersion.PlayServicesVersionConstraint);


Posted by 후미카
:

ResolutionException: Cannot find candidate artifact for com.google.android.gms:play-services-games:8.1+


에러 발생시 해결방법


Preferences - External Tools 에 있는 SDK 경로를 입력 한다.


SDK 매니저에서 아래 라이브러리를 다운로드 한다.

1. Android Support Library - rev. 24 or greater

2. Google Play services - rev. 28 or greater

3. Google Repository - rev. 23 or greater.

Posted by 후미카
:

시작 - 실행 - compmgmt.msc  - 서비스 선택 - UnityAssetserver 선택 후 속성


Log on 탭에서 로컬 시스템 계정 선택 후 확인 버튼을 누른 뒤 


서버를 재시작 한다.







Posted by 후미카
:

파일관리자에서 어플 설치 후 최초 1회에 한해서 어플리케이션이 죽는 현상이 발견 되었다.


adb 또는 이클립스에서 설치시엔 문제가 발생하지 않지만 파일관리자로 설치 시에만 발생하는 문제 였다.


해결 방법은 유니티 최신 버전으로 업그레이드 혹은 매니페스트 에서 android:launchmode 를 변경 해 주는 방법이 있다.









하지만 안드로이드 Developer 에서는 SingleInstance 혹은 SingleTask 의 사용하지 않기를 권고하고 있습니다.


SingleInstance, SingleTask 를 사용하게 될 경우 충분한 테스트가 필요 할 것 같습니다.

Posted by 후미카
:

Assets 폴더 내부에 있는 이미지 파일을 소스상에서 로드하는 방법은 Resources.Load 를 사용하면 된다.


사용 방법은 아래와 같다.


이미지의 위치가 Assets/Resources/Texture/image.jpg 인 경우



private iEnumerator loadImage()
{
	Texture2D texture = null; 
	string PATH = "Texture/image.jpg";		//이미지 위치를 저장하는 변수
	texture = Resources.Load(PATH,typeof(Texture2D)) as Texture2D;	//이미지 로드
	buttonImage.mainTexture = texture;	//이미지를 넣어 준다.
}



Resources.Load 를 이용해서 불러오기 위해서는 반드시 Resources 하위폴더에 있어야 한다.

Posted by 후미카
:

애드몹 전면광고는 메인 UI 스레드에서 호출 되어야 한다.


유니티 - 안드로이드 연동시에 loadAd 시 또는 isLoad 체크시에 어플이 에러로그 없이 종료 되는 현상이 있는데 이는 메인 UI스레드에서 실행하지 않았기 때문이다.


이를 해결하기 위해선 메인 UI 스레드에서 실행해 주면 되는데 해결 방법은 아래와 같다.


private InterstitialAd mInterstitial;


private void showInterstitial()
{
	runOnUiThread(new Runnable() {
			
		@Override
		public void run() {
			if (mInterstitial.isLoaded()) {
				Log.i(TAG,"call show");
				mInterstitial.show();
				
				loadInterstitial();
			}
		}
	});
}
Posted by 후미카
:

유니티에서 전처리기를 사용하는 방법은 2가지가 있다


1. 파일로 정의 하는 방법

2. 유니티 설정에서 정의하는 방법




1. 파일로 정의하는 방법


먼저 자신이 사용하는 유니티 Api Compatibility Level 을 알아봐야 합니다.


확인 방법은 PlayerSettings -  Other Settings 에서 확인이 가능 합니다.





#define AAA 를 전역으로 사용하고 싶다면 메모장에 -define:AAA 를 적고

#define AAA 와 #define BBB 를 모두 사용하고 싶다면 -define:AAA;BBB 와 같은 형식으로 적어주면 됩니다.


모두 적으셨으면 유니티 프로젝트에 Assets 폴더에 


.net 2.0 일 경우엔

gmcs.rps


.net 2.0 subset 일 경우엔

smcs.rps



파일로 저장 해 주시면 됩니다.


smsc 파일 수정시엔 해당 define 을 사용하는 스크립트를 재 컴파일 해줘야 됩니다.



2. 유니티 설저엥서 정의하는 방법


플레이어 세팅 - other settings 에서 설정 해 주면 됩니다.


ex) AAA;BBB;




Posted by 후미카
:

NGUI 사용중 스크롤 마스크 영역 밖에 있는 Texture 이미지가 보일 때가 있는데


이때 Material 의 Shader 속성을 Unlit / Transparent Colored 로 변경 해주면 됩니다.




Posted by 후미카
:

p4merge 를 64비트 프로그램으로 설치하였다면 언인스톨 한 뒤 32비트 프로그램으로 재설치 해주면 됩니다.


유니티가 64비트 p4merge 를 인식하지 못하기 때문에 발생하는 현상 입니다.


p4merge 다운로드



Posted by 후미카
:

한 게임 오브젝트가 A 오브젝트와는 충돌을 하지만 B 오브젝트는 충돌을 무시하고 싶을 때가 있다.


이럴땐 게임 오브젝트에 레이어를 씌워 준 다음 프로젝트 세팅에서 물리 충돌 체크 여부를 설정 할 수 있다.


Edit - project setting - physics 탭 아레쪽에 보면 각 레이어별로 충돌체크 여부가 있다. 이부분에서 충돌하지 않을 레이어와 겹쳐있는 체크박스를 해제 해 주면 된다.


주의사항 - 체크박스 해제시 Collision 뿐만 아니라 Trigger 체크까지 수행하지 않게 된다. 

트리거 체크를 원하는 경우 자식 오브젝트로 콜라이더를 하나 추가한 뒤 다른 레이어로 트리거 체크를 하게되면 가능 하다.

Posted by 후미카
:

Input.getTouch(0) 함수 대신


Input.GetMouseButtonDown (0) 함수를 하용하면 터치와 마우스클릭이 동시에 처리 된다.



하지만 Input.GetAxis("Mouse X") 의 경우 마우스와 터치의 반환값은 서로 다르다.

Posted by 후미카
:

유니티3d 에서 안드로이드 버튼에대한 keycode 값



home - Keycode.Home


menu - Keycode.Menu


back - Keycode.Escape

Posted by 후미카
:

게임 소스 내에서 부모 게임오브젝트에 접근할땐 콜라이더를 이용해서 찾을 수 있다.


ex) 

transform.parent.gameObject;

transform.root.gameObject;

Posted by 후미카
:

Unity3d 에서는 Random.range(float start,float end); 함수를 사용하여 무작위 숫자를 생성한다


이때 결과는 start 이상 end 미만이므로 0부터 100을 포함한 숫자를 원한다면 Random.range(0,101); 로 입력 해야한다.


주의사항


시작과 끝값에 실수를 입력 할 경우 뒤에 반드시 f 를 붙여줘서 플로트 형태로 전달한다.


ex)

Random.range(0.1f, 10.5f);


해당 랜덤 함수는 UnityEngine 네임스페이스를 사용한다.

System.Random 과는 다르기 때문에 System 과 UnityEngine 네임스페이스를 동시에 사용하는 경우 UnityEngine.Random 형식으로 사용 해야 하는 경우가 있다.

Posted by 후미카
:

카테고리

전체보기 (102)
Development (102)
iOS (15)
Android (24)
Java (5)
Unity3d (27)
Photon (1)
C# (1)
C++ (7)
cocos2d-x (14)
etc (8)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2024/05   »
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

글 보관함