목차

반응형

목차

1. 개요

2. 프로젝트 생성과 세팅

3. 비 개발자와 공유

4. 주의사항

 

 

 

1. 개요

유니티를 사용하면 2명 이상의 사람과 프로젝트를 공유해야 하는 상황이 생긴다.

원래는 개발하는 환경에 따라 다양한 변수가 생겨서 이를 직접 겪어보고 숙지를 해야 하는데 이 글을 통해서 간접적으로 경험해보고 습득할 수 있도록 글을 작성해봤다. 

 

2. 프로젝트 생성과 세팅

유니티 프로젝트를 생성하고 Git Repository에 등록하는 것은 다른 상황과 동일하다.

특이한 점이라면 유니티 프로젝트 내에 Library나 상당한 용량을 차지하는 부분이 존재하는데 gitignore를 통하여 처리해야 한다.

 

유니티에서 ignore 하면 좋은 파일들에 대한 프리셋은 구글에 unity gitignore라고 쳐보면 예시가 많다.

바로 가져다가 써도 될 정도로 좋다.

 

주의할 점은 git은 파일 용량이 50mb가 넘어가는 파일을 올리게 되면 복잡하게 되니까 미연에 방지하도록 하는 것을 추천한다.

 

3. 비 개발자에게 공유

개발자끼리는 얘기가 빠르지만 비개발자(디자이너, 기획자)에게 프로젝트를 공유하고 사용하는 방법을 전달해야 한다.

깃 프로그램을 사용하기 위한 gui툴을 쓰는 것이 좋겠다. 주로 sourcetree나 fork를 사용한다.

 

공유해야 하는 사람은 크게 두 부류로 나뉜다.

프로젝트를 수정할 일이 있는 직군 : 디자이너, 프로그래머, 기획자

프로젝트를 수정할 일이 없는 직군 : QA, CS, PM

 

프로젝트를 수정할 일이 있는 직군에게는 깃을 스스로 사용할 수 있도록 깃의 Commit, Push, Fetch, Branch, Merge Branch, Local Changes, Discard 같은 개념에 대해서 알려주고 학습시켜야 한다.

프로젝트를 수정할 일이 없는 직군에게는 깃을 알려주면 좋긴 하지만 크게 효용성은 없을 것이기 때문에 단순히 최신 깃을 받아오고 Local Changes를 Discard 하는 정도만 알려줘도 되겠다.

 

4. 주의사항

프리팹과 씬

유니티 디자이너들은 프리팹에 대한 개념이 생소할 수 있다. 하지만 git을 이용해서 공동작업을 하기 위해서는 프리팹을 능숙하게 다루는 것이 필수다.

 

그 이유는 씬은 merge관리가 힘들지만 prefab은 merge 관리가 쉽기 때문이다.

정확히는 여러 명이 하나의 씬을 놓고 각자 작업을 해버리면 머지 컨플릭트 에러가 나는데 거의 머지가 불가능할 정도로 불친절하게 정보가 표출된다.

 

반면에 하나의 씬에 모든 것을 프리팹화 시켜놓고 각자 작업할 프리팹을 수정하며 목표로 하는 씬의 직접적인 수정은 가하지 않는다면 머지컨플릭트가 발생하지 않는다.

 

 

 

애니메이션 수정

가끔씩 무언가 수정했는데 local changes에 나타나지 않는 경우가 있다.

예를 들어 애니메이션을 수정한 경우 바로 local changes에 나오지 않는 것을 볼 수 있다.

이런 경우는 씬을 저장하면 해당 수정사항이 적용돼서 local changes에 나타난다.

 

 

씬의 인스펙터가 날아갔을 때

흔한 경우는 아니지만 예전에 내가 유니티가 오피셜로 라이브러리 폴더는 공유할 필요가 없다고 했지만 내가 직접 겪어보기도 했는데 라이브러리 폴더가 없는 상태에서 프로젝트를 공유하면 씬의 모든 인스펙터가 missing이 되는 현상이 발생하고는 한다.

그런 경우 유니티 프로젝트 reimport all을 해주면 간단하게 해결된다.

반응형
반응형

잘 모르고 있었는데 인터넷에 안나와있어서 모르고 있다가 회사 동료가 알려주었다.

 

크기를 줄이고자 하는 스프라이트 선택

 

Max Size가 기본이 2048로 되어있는데 모든 이미지를 2048로 하면매우 작게 보여줘도 되는 이미지임에도 불구하고 용량이 크게 잡히는 경우가 있다.

 

그렇다고 Max Size를 무조건 낮추면 이미지 해상도가 낮아져서 이미지가 깨져보이는데 경우에 따라 적당한 값을 찾아주도록 하자.

반응형
반응형

유니티 빌드할때 apk 파일 용량 확인하는 방법.

일단 Android apk 빌드를 한다.

 

 콘솔 우클릭 > Open Editor Log

 

로그 파일을 위로 쭉 올리다보면 어떤 파일이 얼마나 용량을 차지하는지 나와있다.

반응형
반응형

애드몹에서 리워드 비디오를 보면 보상을 설정하고 싶은데 나와있는 부분이 하나도 없다.

마치 전세계가 약속을 한 것처럼 아무도 그 부분에 대해서 언급을 안한다. 덕분에 별거아닌데 삽질을 엄청했다.

 

https://developers.google.com/admob/android/rewarded-video?hl=ko

 

보상형 동영상 광고  |  Android  |  Google Developers

보상형 동영상 광고는 동영상 광고를 끝까지 시청한 사용자에게 인앱 보상을 제공하는 전체화면 동영상 광고입니다. 이 가이드에는 AdMob의 보상형 동영상 광고를 Android 앱에 게재하는 방법이 나와 있습니다. 기본 요건 보상형 동영상 광고 초기화 자바 package ... import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.MobileAds; import com.g

developers.google.com

여기 보면

이걸로 광고를 호출하고

 

이걸로 광고 보상을 지급해준다는데

 

저 Reward args는 대체 어떻게 전달해주냐 이거다

 

 

무려 유니티에서 하는 것이 아니라 애드몹에서 RV를 설정하는 부분에서 설정해야한다. 리워드를 클릭한다.

 

여기서 이렇게 설정을 하는 것이었다.

 

리워드를 생성하고나서 발급받은 광고키를 적용한다.

 

나는 위와 같이 설정하였다.

 

로그캣에서 찍히는 값이다.

만약 애드몹에서 기본적으로 제공하는 기본 광고키를 사용하면 amount는 10, Type은 coins가 나올 것이다.

반응형
반응형

구글 플레이 스토어에 앱을 출시하려고 보면 안드로이드 앱 번들로 만든 앱이 아니라고 괜히 신경쓰이게 경고 표시를 띄워준다.

플레이 스토어 기존 apk 방식 업로드

 

 

그래서 그 잘나신 안드로이드 앱 번들이 뭔가요 찾아봤는데 되게 좋은 것 이었다.

안드로이드 번들에 대한 간략한 설명은 많이 나와있으니 다른 블로그를 참고하자

https://eso0609.tistory.com/68

 

기존 앱에 App Bundle 적용하기

2018 Google IO에서 App Bundle에 대한 세미나를 들었습니다. '적용해야지' 말만 하다가 이번 기회에 적용해보았습니다. App Bundle 이란? App Bundle 이란 APK 와 비슷하지만 모든 코드, 리소스, CPU 아키텍처와..

eso0609.tistory.com

요약하자면 설치파일을 핸드폰 기종별로 최적화되도록 설정해서 앱 용량을 최적화하는 기법이다.

 

다만 귀찮게도 안드로이드 앱 번들 기능을 사용하기 위해서는 서명이 필요하다.

 그 방법에 대하여 설명하도록 하겠다.

 

목차

1. 구글 플레이 스토어 서명 페이지

2. 암호화된 서명 파일 생성

3. 유니티에서 안드로이드 앱 번들로 프로젝트 빌드

4. 플레이 스토어에 업로드

 

 

 

 

1. 구글 플레이 스토어  서명 페이지

> 출시 관리 > 서명 페이지로 이동

 

'첫번째 Android 스튜디오에서 내보낸 키를 업로드 합니다.' 선택 (2, 3번은 한 두시간 걸쳐서 시도해봤으나 실패)

1번 방법으로 하기 위해서는 keystore파일이 필요하다.

keystore 파일이 없다면 아래 블로그를 참고하여 생성하도록 하자.

https://m.blog.naver.com/PostView.nhn?blogId=lyw94k&logNo=221290872599&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

유니티 Keystore 생성하는 방법 (안드로이드 빌드)

유니티 Keystore 생성하는 방법 (안드로이드 빌드) (Unity Android Build Create Key 키스토어) 간단...

blog.naver.com

 

 

 

 

2. 암호화된 서명 파일 생성

 

keystore파일을 안드로이드 스튜디오를 통하여 암호화를 거쳐 pepk라는 암호화된 서명파일이 필요하다.

Build > Generate Signed Bundle / APK …

안드로이드 스튜디오에서 Build > Generate Signed Bundle / APK …

 

 

상단의 안드로이드 앱 번들 체크, Next

 

Choose existing > 기존에 만들어 두었던 keystore 파일을 선택

키스토어 파일을 생성할때 입력하였던 Key store password, 지정한 Key alias, Key password를 입력한다.

하단의 Export encrypted key for enrolling pusblished apps in Google Play App Signing 체크

Next

 

Destination Folder에서 내보내기 할 경로 선택 > release 선택 > Finish

 

그러면 다음과 같이 pepk파일이 생성된다.

 

해당 파일을 플레이 스토어에서 아까 파일 업로드하는 곳에 업로드 해주면 인증이 된다.

 

 

3. 유니티에서 안드로이드 앱 번들로 프로젝트 빌드

안드로이드 빌드 환경에서 Build App Bundle을 체크해준다.

aab 파일이 만들어진다.

 

 

4. 플레이 스토어에 업로드

 

해당 파일을 apk파일을 올리던 것 처럼 플레이 스토어에 올린다.

알아서 분석을 해주는데 기다리면 된다.

기존 60메가 하던 apk가 40메가대로 줄었다.

 

반응형
반응형

UI 작업을 하다보면 클릭 버튼의 영역이 너무 작아서 좋은 UX를 제공하기 위해서 일부러 실제 이미지보다 클릭 영역을 확장하는 경우가 있다.

 

해결 방법은 간단하기 때문에 목차없이 글을 쓰도록 하겠다.

왼쪽 : 클릭 영역 확장하기 전 // 오른쪽 : 확장 후

원래는 안의 사각형이 버튼의 클릭 영역이지만 안에 빈 이미지를 추가해주면 다음과 같이 클릭 영역이 늘어난다.

 

방법은 다음과 같다.

캔버스에 다음과 같이 버튼을 추가한다.

 

버튼 하위의 텍스트 오브젝트를 지우고 Image의 스프라이트를 제거하고 투명하게 바꿔주고 크기를 원하는 크기로 정한다.

 

버튼에 2개의 이미지를 추가한다.

 

Image가 톱니바퀴 이미지고 Image(1)이 클릭 영역 확장을 위한 이미지로 이미지의 색을 투명하게 바꿔준다.

 

부모 버튼의 Target Graphic을 형체가 있는 이미지로 바꿔준다.

 

늘어난 투명 영역도 클릭 영역에 포함된다.

반응형
반응형

맥에서 유니티의 Application.persistentDataPath 경로에 데이터를 저장하고 불러올 때 직접 들어가서 수정을 하거나 삭제를 하려는데 해당 경로로 이동하기가 쉽지 않다.

 

윈도우는 익스플로러에 경로를 넣으면 바로 들어가지지만 맥은 그렇지 않다.

 

문제

Application.persistentDataPath 로그

MAC에서 유니티의 Application.persistentDataPath 경로는 위와 같다.

위의 경로로 이동을 하려고 한다.

 

 

해결

1. 터미널 사용

터미널

맥 하단의 터미널을 켜서 접근한다.

 

  • cd ~/Library -> 라이브러리 폴더까지 바로 이동
  • 탭을 이용하면 편리함 ex) cd /U 탭 -> cd/Users/ 이렇게 알아서 자동완성시켜줌
  • Application Support의 경우 띄어쓰기를 해야 돼서 Application 치고 탭을 눌러서 자동완성시켜주는 것이 편하다.

 

이후 rm이나 vi 명령어로 삭제나 수정을 한다.

 

2. 파인더 사용

파인더를 켠다.

파인더에서 Cmd + Shift + G 를 눌러서 경로를 입력해서 이동하는 기능을 호출한다.

 

아까 유니티에서 콘솔에 찍힌 경로로 이동을 하려고 붙여 넣어서 Go를 누르면 아무 반응이 없다.

이는 Library 경로가 숨김 처리되어 있어서 그런데 아래 명령어를 통하여 숨김 처리를 해제하면 해결된다.

 

터미널에 다음과 같이 입력한다.

chflags nohidden ~/Library/

그리고 다시 로그에 나온 경로를 입력하고 Go를 누르면 아래와 같이 이동이 된다.

 

반응형
반응형

Problem

Attched collider 2d script, physical object loose bouncy after few bounce and slide along surface.

It would be easy to understand if you have a look at the video below.

 

 

reproduce project setting

 

 

 

reproduce project setting 

Test project looks like above, has 4 2d box collider and a circle collider which bounces inside a box.

 

 

 

attched script of a circle

The script just give a force on start of the project.

 

 

 

 

Physics Material 2D applied to walls and a circle.

This Physics Material 2D make the circle loose it's force gradually.

 

 

Cause

Theres is a setting in Unity Physics 2D which consider collision to inelastic collision, called velocity threshold.

 

 

 

 

 

Edit > Project Settings > Pysics (2D) > Velocity Threshold

When a collision has lower velocity than the threshold preset. It is considered as an inelastic collision.

 

 

 

Solution

Lower the Velocity Threshold value.

 

 

Result

The circle bounces well though has slow velocity

 

반응형
반응형

유니티에서 파티클을 자동으로 제거하는 방법에 대해서 알아보자.

스크립트가 무조건 필요하다.

ParticleSystem.IsAlive(true)인지 질의하여 파티클을 삭제하는 스크립트를 추가하면 되는데 아래 에셋에서 더 좋은 기능이 첨부되어 있는 스크립트를 찾았다.

JMO Assets - Cartoon FX - 파티클 프리팹 - CFX_AutoDestructShuriken 스크립트

 

[RequireComponent(typeof(ParticleSystem))]
public class CFX_AutoDestructShuriken : MonoBehaviour
{
	// If true, deactivate the object instead of destroying it
	public bool OnlyDeactivate;
	
	void OnEnable()
	{
		StartCoroutine("CheckIfAlive");
	}
	
	IEnumerator CheckIfAlive ()
	{
		ParticleSystem ps = this.GetComponent();
		
		while(true && ps != null)
		{
			yield return new WaitForSeconds(0.5f);
			if(!ps.IsAlive(true))
			{
				if(OnlyDeactivate)
				{
					#if UNITY_3_5
						this.gameObject.SetActiveRecursively(false);
					#else
						this.gameObject.SetActive(false);
					#endif
				}
				else
					GameObject.Destroy(this.gameObject);
				break;
			}
		}
	}
}

요렇게 하면 좋은점은 프리팹에서 OnlyDeactivate를 체크하면 파티클이 플레이가 끝나도 파티클을 삭제하지 않고 비활성화만 해주는 추가적인 기능이 있어서 더 좋다.

반응형