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

카테고리

분류 전체보기 (2738)
Unity3D (817)
Programming (475)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (228)
협업 (58)
3DS Max (3)
Game (12)
Utility (136)
Etc (96)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (53)
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
05-07 05:17

Unity Script에서 UIApplicationExitsOnSuspend Key 제거(with PostProcessBuild)

----

 

using UnityEditor;
using UnityEditor.Callbacks;
#if UNITY_IOS
using System.IO;
using UnityEditor.iOS.Xcode;
#endif
 
public class BuildProcessor
{
   [PostProcessBuild(1)]
   public static void OnPostprocessBuild(BuildTarget buildTarget, string pathToBuiltProject)
   {
#if UNITY_IOS
      // Get plist
      string plistPath = pathToBuiltProject + "/Info.plist";
      PlistDocument plist = new PlistDocument();
      plist.ReadFromString(File.ReadAllText(plistPath));
 
      // Get root
      PlistElementDict rootDict = plist.root;
 
      // Set encryption usage boolean
      string encryptKey = "ITSAppUsesNonExemptEncryption";
        rootDict.SetBoolean(encryptKey, false);
 
      // remove exit on suspend if it exists.
      string exitsOnSuspendKey = "UIApplicationExitsOnSuspend";
      if(rootDict.values.ContainsKey(exitsOnSuspendKey))
      {
         rootDict.values.Remove(exitsOnSuspendKey);
      }
 
      // Write to file
      File.WriteAllText(plistPath, plist.WriteToString());
#endif
   }
}

 

[출처] https://forum.unity.com/threads/the-info-plist-contains-a-key-uiapplicationexitsonsuspend.689200/

 

The Info.plist contains a key 'UIApplicationExitsOnSuspend

I have this error after updated my inapp module. Using unity 2018.3.13f1 ITMS-90339: Deprecated Info.plist Key - The Info.plist contains a key...

forum.unity.com

 

 

[참조] https://blog.naver.com/yoohee2018/221566174487

 

[Unity] Deprecated Info.plist Key - The Info.plist contains a key 'UIApplicationExitsOnSuspend'

Unity 2019.1.4.1f​[19.06.19 기준 에러발생]유니티 iOS 빌드하여 Xcode에서 Archive 제출 시 다음과...

blog.naver.com

 

반응형
Posted by blueasa
, |
        // AndroidManifext.xml
        // <meta-data android:name="aa.bb.channelid" android:value="D4LW023" />
        // <meta-data android:name="aa.bb.subchannelid" android:value="1" />
        AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
        string packageName = activity.Call<string>("getPackageName");
        AndroidJavaObject manager = activity.Call<AndroidJavaObject>("getPackageManager");
        AndroidJavaObject packageInfo = manager.Call<AndroidJavaObject>("getApplicationInfo", packageName, manager.GetStatic<int>("GET_META_DATA"));
        AndroidJavaObject aBundle = packageInfo.Get<AndroidJavaObject>("metaData");
        
        string strChannelId = aBundle.Call<string>("getString", "aa.bb.channelid");	// string
        int iSubChannelId = aBundle.Call<int>("getInt", "aa.bb.subchannelid");	// int

 

[정보제공] 게임코디-선후님

반응형
Posted by blueasa
, |

[링크] https://jwidaegi.blogspot.com/2019/07/unity-notch-ui.html

 

Unity Notch(노치) 단말기 UI 설정

상단의 프레임 아래쪽으로 툭 튀어나와 있는 H/W 영역인 Notch의 처리를 위해 체크해야 하는 항목을 정리해 둔다. 빌드 세팅 Player Setting > Android > Resolution and Presentation 내부 설정 확인 ...

jwidaegi.blogspot.com

 

반응형
Posted by blueasa
, |
if (animator.GetCurrentAnimatorStateInfo(0).IsName("YourAnimationName"))
{
    // do your magic
}

 

[출처] https://stackoverflow.com/questions/23449494/is-there-an-isplaying-type-function-for-animator

 

Is there an isPlaying() type function for Animator

I know you can do animation.isPlaying() but is there something similiar for Animator ? So if I have: Animator animator; void Start() { animator = GetComponenet(); } Then I c...

stackoverflow.com

 

반응형
Posted by blueasa
, |

텍스트 메쉬 프로에 대한 사용법에 대하여 검색용으로 간략히 적어 놓습니다.

편하게 적다 보니 반말체인 점 양해 부탁드립니다.

---------------------------------------------------------------------------------------------------------

ㅁ 텍스트 메쉬 프로(이하 텍메프)의 설치
  1. 유니티 메뉴의 Window -> Package Manager 에서 받아서 설치한다.





ㅁ 텍메프 생성


  1. 하이라키 뷰에서 마우스 오른쪽 클릭 -> UI -> Text - Text Mesh Pro를 실행한다. 텍메프는 유니티 GUI 기능을 이용하며 이는 캔버스 내부에 사용한다.



ㅁ 폰트 에셋
  텍메프는 폰트 파일(ttf)가 아닌 폰트 파일을 이용해서 만든 폰트 에셋을 사용한다. 폰트 에셋 생성은 다음과 같다. (한글 파일 기준)




1. 유니티 메뉴의 Window -> TextMeshPro -> Font Asset Creator 를 실행한다.

2. Source Font File에 폰트 파일(ttf)를 입력한다.

3. Padding에 글자 간 간격을 입력한다. 4~5 정도가 적당한 듯 하다.

4. Atlas Resolution에서 아틀라스 이미지 파일의 크기를 결정한다. 한글 폰트의 경우 4096 X 4096 정도는 되어야 할 듯 하다.

5. Character Set에서 어떤 방식을 사용할지 결정 할 수가 있다.




주목할 점은 Custom Range, Custom Characters.

- Custom Range 은 폰트의 글자 위치를 이용하여 아틀라스로 만들 글자를 정한다.

- Custom Characters는 특정 원하는 글자를 직접 입력하여 원하는 글자를 추출할 수 있다. "가나다"라고 입력 시 가나다 3글자만 추출한다.

여기서는 Custom Range를 이용하여 모든 글자를 추출한다.

6. Character Sequence에 추출할 글자를 입력한다.

완성형 기본 한글의 경우 44032-55203을 입력한다.

7. Rander Mode를 설정 한다.

 



특정 렌더 모드이 경우 텍메프에서 메테리얼이 비트맵 형식으로 가공된다. 이 경우 아웃라인등 추가적인 효과를 입력하기 어렵다.

이번에는 추가적인 효과를 입력할 수 있는 Distance Field 형식이 필요하기에 SDF32 방식으로 설정한다.

- 특정 렌더 모드의 경우 글자 끝을 둥글게 처리한다. 즉 고딕 폰트를 설정하였는데 돋음체 처럼 끝이 둥근 형태로 나올 수 있다.
- 추후 메테리얼을 직접 Distance field 로 변경할 수 있다. 하지만 이 경우 한글에 아웃라인 등 추가적인 효과가 적용되지 않는 것을 확인하였다.

8. Generate Font Atlas를 클릭하여 굽는다.



굽는다. 시간이 오래 걸린다.




시간이 오래 걸리니 귀여운 고양이를 보자.

귀엽다.





안고도 잔다.

귀엽다.





배고도 잔다.

귀엽다.





귀엽다.



9. 폰트 에셋이 노릇노릇 구워 지면 Save를 눌러 저장하자. 저장하는 걸 잊지 말자.


ㅁ 텍메프에 폰트 에셋 연결


1. 텍메프의 인스팩터 뷰에서 Font Asset 부분에 방금 구워진 폰트 에셋을 추가한다.


2. 한글을 입력해 본다.

잘 나온다.



ㅁ 프리셀



이건 프리셀이다.



ㅁ 메테리얼 프리셋

텍스트 메테리얼 부분을 이용하여 특정 효과를 입력 추가 하여 보자.



폰트에 아웃라인을 추가하였다. 하지만 이때 문제는 같은 메테리얼을 공유하는 모든 텍메프에 효과가 동일 하게 적용된다.

우선 추가로 다른 메테리얼을 추가해 보자.


1. 폰트 에셋의 작은 삼각형 화살표를 열고 메테리얼 파일을 복사한다.  (맥 기준 Alt + D.. 윈도는 컨트롤 디였던가…?)


2. 복제된 메테리얼의 이름을 수정한다. 이때 폰트명은 폰트 에셋의 이름이 반드시 포함되어야 한다.
예 ) 폰트 에셋 명 : "NSquareB" , 추가된 메테리얼 명 "NSquareB Outline"


3. 텍메프의 인스펙터뷰의 Material Preset에서 새로 추가된 메테리얼을 선택 후 원하는 효과를 추가해 보자.

메테리얼을 변경한 텍메프에만 효과가 적용되는 걸 확인할 수 있다.



ㅁ 로컬라이징
한글 외에 일본어 중국어 등이 추가하여 새로운 폰트 에셋을 생성할 경우 앞에서 만든 기존의 폰트 에셋을 사용할 수 없다.

폰트에셋과 이름이 다른 메테리얼을 사용할 수가 없기 때문이다. (메테리얼에 적용된 아틀라스가 다르니... )

아마 로컬라이징을 생각하는 경우 언어별로 폰트에셋을 사용해야 하는데 이 경우에는 테그를 이용하는 게 편할 듯 하다.



1. 텍메프의 Text 부분에 다음과 같은 테그를 입력하여 적용할 수 있다.

폰트 변경 : font="폰트에셋명"
메테리얼 변경 : material="메테리얼명"

2. 테그 잘 안다고 material = "이름" 같이 사이 띄기 넣지 마라. (내가 헤맨 건 절대 아님….)

3. 이때 폰트 에셋과 메테리얼은 Resources 폴더 안에 위치해야 한다.



ㅁ 스타일
사실 저 테그가 게임 내에 들어갈 글귀들과 함께 들어가기에는 좀 길다. 스타일을 이용하여 단축할 수 있다.


1. 프로젝트뷰에서 텍메프 폴더 하단에 Style Sheets폴더 안 Default Style Sheet 파일을 선택 한다.


2. 인스팩터 뷰의 스크롤을 내린 뒤 + 버튼을 클릭한다.

3. 아무런 변화가 없다.

4. 당황하지 말고 Next를 눌러 다음 페이지로 넘기자.

5. 아마 마지막과 같은 내용의 스타일이 하나 더 추가되어 있을 것이다.



6. 원하는 Name을 입력 후 원하는 테그를 입력한다.

7. 저장 버튼을 누른다.

8. 속았다. 저장 버튼은 없다. 자동 저장이다.



9. 6에서 입력한 Name을 스타일 테그로 불러올 경우 정상적으로 동작하는 것을 확인할 수 있다.

(마지막 이미지의 붉은 글씨가 헷갈릴 수 있을 거 같다. 선택된 텍메프 오브젝트는 위의 글씨다.)

 

 


[추가]
하나 더 추가합니다.

로컬라이징 부분에서 한글 영어, 일어, 등 변경 사항이 있을 때 위에는 폰트 에셋과 메테리얼을

테그로 손보는 방식을 생각해 봤는데 더욱더 간단한 방법이 될 수도 있을 거 같아요.

만드신 폰트 에셋을 선택하고 인스팩터 뷰에서 스크롤 쭉 내리시면 위의 이미지와 같은

Fallback Font Assets이라는 부분이 있습니다.

이건 입력한 문자가 폰트에셋에 없으면 다른 폰트 에셋의 문자로 대처할 수 있는 기능이에요.

여기에 한국어 영어 일본어 등 추가 폰트 등을 물려 놓을 경우 별도의 폰트 로컬라이징 필요 없이

바로 자동으로 연결이 되네요.

 

 

[출처]

http://www.gamecodi.com/board/zboard.php?id=GAMECODI_Talkdev&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=5297

루트군님

 

유니티 텍스트 메쉬 프로에 대한 사용법 간략 정리

텍스트 메쉬 프로에 대한 사용법에 대하여 검색용으로 간략히 적어 놓습니다.편하게 적다 보니 반말체인 점 양해 부탁드립니다.--------------------------------...

www.gamecodi.com

 

반응형
Posted by blueasa
, |

Rim lighting and realtime shadows for sprites in Unity (2D) – 1/2

Rim lighting and realtime shadows for sprites in Unity (2D) – 2/2

 

[github] https://github.com/Rafarfn/SpriteLighting

 

Rafarfn/SpriteLighting

Custom 2D sprite lighting with shadow casting and rim lighting - Rafarfn/SpriteLighting

github.com

 

반응형
Posted by blueasa
, |

 

https://github.com/sunduk/UnityRoundedShader

 

 

유니티에서 셰이더로 원이나 모서리가 둥근 사각형 만들때 쓸 수 있는 셰이더 입니다.

구글 검색하면 자료는 많이 나오는데 쉽게 이해되는 코드가 없는것 같아서 정리할겸 만들어 봤습니다.

 

UI쪽은 사실 유니티에서 지원하는 mask기능도 있어서 쓸일이 많지는 않겠지만

실시간으로 만든 텍스쳐 다룰때는 유용할것 같습니다.

 

 

p.s 

이거 구현하면서 인터넷과 구글이 없었으면 어떻게 이런 기법들을 배우고 공유할 수 있었을까 하는 생각이 많이 들었습니다.

특히 셰이더토이, 더 북 오브 셰이더 여기 두곳은 정말 보물섬 같은 곳이네요.

 

https://www.shadertoy.com/view/ldfSDj

https://thebookofshaders.com/

 

 

[출처]

게임코디 태풍의그라운드

http://www.gamecodi.com/board/zboard.php?id=GAMECODI_Talkdev&page=1&page_num=35&select_arrange=headnum&desc=asc&sn=off&ss=on&sc=on&keyword=&no=5239&category=

반응형
Posted by blueasa
, |

[링크]

http://blog.naver.com/simtt/220851899973

 

[Unity] 유니티 Local Notification을 활용해보자

iOS의 경우 Unity 자체에서 로컬 알람 기능을 제공해준다. 안드로이드는 직접 구현할 수도 있지만, 그냥...

blog.naver.com

 

반응형
Posted by blueasa
, |

 

[링크]

https://lib.dasony.net/7

 

[NATIVE, ANDROID] Local Notification(로컬 알림) 유니티 플러그인

개요 유니티에서 네이티브 알림 기능을 iOS 만 제공하고 있습니다. 안드로이드에서 로컬 알림을 이용하려면 플러그인을 직접 제작하거나 다른 사람이 만들어 둔 플러그인을 사용해야 합니다. 이번에 다소니닷넷에..

lib.dasony.net

 

반응형
Posted by blueasa
, |

Unity Local Notification (For android)

This repository allows to send local notification from unity project on android devices.

Features

  • you can send local notification in android
  • you can schedule sending notification for some time in future
  • you can send notification having big picture style

Issues

  • not all android notification features are supported

Sample code

Publisher publisher = PublisherManager.Instance.CreatePublisher(channelId, channelName, channelDescription); // put your icon png file in Plugins/Android/UnityLocalNotification/res/drawable Notification notification = new Notification() .SmallIconName("test_icon") .Title("My notif title") .Message("This is a test notification message"); publisher.Publish(notification);

Screenshots

Unity asset

Unity local notification asset

Class diagram

class diagram

 

 

[출처] https://unitylist.com/p/g72/Unity-Local-Notification

 

Unity Local Notification

Send Android local notification from unity project source code

unitylist.com

 

반응형
Posted by blueasa
, |