블로그 이미지
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

링크: https://rootblog.tistory.com/150 [root blog]

윈도우10 아이콘 깨짐 현상 캐시 초기화로 해결하기

윈도우10에의 아이콘이 깨지거나 표시가 안될 경우 아이콘 캐시 파일을 삭제해서 복구하는 방법입니다. 윈도우는 파일이나 폴더를 표시할 때 대표 이미지인 아이콘 사진을 사용하고 있는데 아

rootblog.tistory.com

 

반응형
Posted by blueasa
, |

화면 색상이 이상한 경우 참고하실만한 내용인거 같습니다.

 

겔럭시 S10이상의 폰에서 게임 화면이 하얗게 나오는 현상이 발생합니다.

이 경우 원인은 옵션에서 사용자가 고르는 화면 모드가 원인입니다.

 

옵션 -> 디스플레이 -> 화면 모드를 선택합니다.

 

여기에서 선명한 화면을 선택 해봅시다.

 

정상적으로 색상이 돌아온것을 확인할 수 있습니다.

 

 

[출처]

gamecodi.com/4145/%EA%B2%94%EB%9F%AD%EC%8B%9C-s10%EC%9D%B4%EC%83%81%EC%9D%98-%ED%8F%B0%EC%97%90%EC%84%9C-%EA%B2%8C%EC%9E%84%ED%99%94%EB%A9%B4%EC%9D%B4-%ED%95%98%EC%96%97%EA%B2%8C-%EB%82%98%EC%98%A4%EB%8A%94-%ED%98%84%EC%83%81

 

겔럭시 S10이상의 폰에서 게임화면이 하얗게 나오는 현상 - 게임코디

화면 색상이 이상한 경우 참고하실만한 내용인거 같습니다. 겔럭시 S10이상의 폰에서 게임 화면이 하얗게 나오는 현상이 발생합니다. 이 경우 원인은 옵션에서 사용자가 고르는 화면 모드가 원

gamecodi.com

 

반응형
Posted by blueasa
, |

최근 일부 유니티 구버전으로 제작된 기존 게임의 경우, 안드로이드 11에서 크래시와 스크린키보드 이슈가 발생할 가능성을 확인했습니다.

이에 안정적인 유니티 기반 게임 개발 및 운영을 위해 버전 업그레이드를 권장드리며, 

Unity 2018.4.30f1, 2019.4.15f1, 2020.1.14f1, 2020.2.0b12, 2021.1.0a4 이상Advertisement 3.4.9 이상으로 진행해주시면 됩니다. 

각 이슈 관련 사항은 유니티 포럼을 통해 확인 부탁드리겠습니다.

 

 

[출처] 게임코디-즌성님

 

 

[참조1] Android 11 Il2Cpp Arm64 Crash in Unity LTS 2019.4.12f1

 

반응형
Posted by blueasa
, |

[링크] backlog.com/git-tutorial/kr/

 

누구나 쉽게 이해할 수 있는 Git 입문~버전 관리를 완벽하게 이용해보자~ | Backlog

누구나 쉽게 알 수 있는 Git에 입문하신 것을 환영합니다. Git을 사용해 버전 관리를 할 수 있도록 함께 공부해봅시다!

backlog.com

 

반응형
Posted by blueasa
, |

[증상]

다른 브랜치에서 작업을 끝내고 'Merge XXX into current branch'를 했는데,

Conflict가 나서 Resolve using 'Theirs'를 하니 제목과 같은 에러가 남.

그래서 Resolve using 'Mine'을 해봤는데 그래도 똑같은 에러가 나면서 처리가 안됨.

 

검색을 좀 해보니 충돌(Conflict)난 파일이 삭제된 파일이라 Resolve로는 해결이 안되는 것 같다.

그래서 설명해준대로 아래와 같은 방법으로 진행함. 

 

[해결방법]

1. 위 에러가 뜨는 파일 선택(여러개면 같이 선택)

2. 마우스 우클릭 - Remove

3. Remove 해도 파일이 사라지지 않고 그대로 선택된 상태(그대로 유지)

3. 마우스 우클릭 - Mark Resolved

 

 

[출처] stackoverflow.com/questions/53227144/cannot-resolve-conflictsapplication-is-locking-files

If you've already checked your .git/index.lock file, then you are likely seeing a SourceTree bug. See jira.atlassian.com/browse/SRCTREEWIN-2366

The bug occurs when either the "Mine" change or the "Theirs" change is a file deletion. Trying to "Resolve using 'Mine'" or "Resolve using 'Theirs'" (respectively), which should result in a file deletion, will give you this error instead.

One workaround (on Windows) is to select the all the conflicted files you want to resolve this way, right click, and select "Remove". The files will (strangely) not change status or disappear, but should remain selected. Right click again, and select "Mark as resolved". This will delete them correctly and resolve the conflict.

반응형
Posted by blueasa
, |

So I had some spare time to study things I've always wanted to.

Left: Default shader // Right: Blur shader

Note:
All shader files (including the files with number suffix) must be downloaded together.
The numbers represent the clipping panel count when using Soft Clip on UIPanel components.
Refer to: http://www.tasharen.com/forum/index.php?topic=13985.0

 

Unlit - Transparent Colored Blur.shader
0.00MB
Unlit - Transparent Colored Blur 1.shader
0.00MB
Unlit - Transparent Colored Blur 2.shader
0.00MB
Unlit - Transparent Colored Blur 3.shader
0.00MB

 

 

You can customize the amount of blurring by editing the two fields below.
iterations variable represents the radius.
blurSize variable represents the scale (in UV coordinate) which the other pixel should be sampled from.
It should be possible to expose these fields so you can mess around with them through Materials or C# scripts.

half blurSize = 0.005; half iterations = 4;

Limitations:
Originally I wanted to implement a Gaussian Blur effect but it's quite complicated and expensive.
So it ended up in a sort of "hack" by blurring the pixels in horizontal and vertical axis only.
While it may look fine on low iteration count, it doesn't take the diagonal pixels in to calculation, making high radius blurs look unnatural.
I am planning to make another workaround for this issue some time.

 

 

[출처] m.blog.naver.com/reisenmoe/221268044207

 

[Unity, NGUI, Shader] Transparent Colored Blur shader

So I had some spare time to study things I've always wanted to.Note: All shader files (includin...

blog.naver.com

 

반응형
Posted by blueasa
, |

윈도우즈10에서 크롬을 잘 쓰고 있었는데,

갑자기 이상한 현상이 나타나기 시작했다.

조금쯤 웹서핑을 하다 보면 어느 순간,

마우스가 움직이지 않고 키보드 입력도 되지 않으며,

ctrl+alt+del키를 눌러도 아무 반응이 없어서,

결국 전원키를 눌러 컴퓨터를 재부팅할 수밖에 없는 현상이

하루에도 몇번씩 발생하였다.

그래서 인터넷을 검색해 봤더니,

플래시 플러그인을 중지시키면 된다고 나와서 그대로 해보았는데,

별 효과가 없었다.

다른 방법도 여러가지 시도해 보았는데,

여전히 먹통 현상은 해결되지 않았다.

 

그러던 중에, 드디어 검색을 통해 해결 방법을 찾았다.

다음과 같이 하면 된다.

  1. chrome://flags로 접속
  2. GPU 레스터화 항목으로 스크롤해서 이동
  3. 콤보박스를 클릭해서,  '사용 설정됨' 선택

 

위와 같이 설정해 주고 난 후에는, 신기하게도

더이상 크롬 사용 중에 컴퓨터가 먹통되는 현상이 사라졌다.



출처: https://pgmaru.tistory.com/86 [PgMaru]

 

크롬 사용시 컴퓨터가 다운되는 현상과 해결 방법

윈도우즈10에서 크롬을 잘 쓰고 있었는데, 갑자기 이상한 현상이 나타나기 시작했다. 조금쯤 웹서핑을 하다 보면 어느 순간, 마우스가 움직이지 않고 키보드 입력도 되지 않으며, ctrl+alt+del키를

pgmaru.tistory.com

 

반응형
Posted by blueasa
, |

iOS 빌드 실행 에러로 한동안 iOS 앱 업데이트를 못하고 있다가 에러를 해결하고 오랜만에 iOS 업데이트 신청을 했다. 앱에 큰 문제가 없어 바로 통과할 줄 알았는데 다음과 같은 이유로 거절당했다.

Guideline 4.8 - Design - Sign in with Apple

We noticed that your app uses a third-party login service but does not offer Sign in with Apple. Apps that use a third-party login service for account authentication must offer Sign in with Apple to users as an equivalent option.

Next Steps

To resolve this issue, please revise your app to offer Sign in with Apple as an equivalent login option.

Resources

  • Review the

sample code

on Apple Developer Support to learn more about implementing Sign in with Apple in your app.

  • Read the Sign in with Apple

Overview

to learn more about the benefits Sign in with Apple offers users and developers.

Please see attached screenshot for details.

이게 무엇인가 하고 찾아보니 2020년 4월 이후로는 다른 소셜 로그인을 제공하는데 애플 로그인을 같이 제공하지 않으면 기존 앱도 업데이트 거절 사유가 된다고 되어있다. 만약 다른 소셜 로그인을 제공하지 않는다면 애플 로그인이 필수는 아니다. 서비스 중인 앱에서 구글 로그인을 제공하고 있어서 애플 로그인을 적용해야 했다.

Apple로 로그인 버튼 추가


기존에 사용하던 버튼 디자인에 애플의 애플 로그인 디자인 가이드에 벗어나지 않도록 버튼을 추가하고 iOS 에서만 애플 로그인이 가능하도록 만들었다. 안드로이드에서 애플 로그인을 사용하려면 좀 더 복잡한 개발 과정을 거쳐야 하고 안드로이드에서 애플 로그인을 사용할 사용자를 고려하기엔 가성비가 좋지 않았다.

애플 로그인 플러그인


구글 로그인 플러그인 처럼 애플 로그인도 플러그인이 있을거라고 생각하고 여러 자료를 찾아보다가 한 블로그에서 좋은 플러그인 두 가지를 찾게 되었다.

Unity Technology에서 제공하는 SignInWithApple

https://assetstore.unity.com/packages/tools/sign-in-with-apple-154202

GitHub에 오픈 소스로 올라와있는 apple-signin-unity

https://github.com/lupidan/apple-signin-unity

서비스에서 Firebase Auth를 사용하고 있기 때문에 Firebase Auth와의 사용법이 나와있는 GitHub 오픈 소스 플러그인을 사용하기로 했다.

apple-signin-unity 설치 및 세팅


플러그인 설치 방법은 GitHub에 여러가지 방법으로 자세하게 나와있다.

https://github.com/lupidan/apple-signin-unity#installation

Apple로 로그인을 사용하려면 Apple Developer에서 Apple ID Configuration을 수정하거나 XCode에서 수동으로 설정할 수 있다.

XCode에서 수동으로 Sign in with Apple을 설정하는 방법

https://github.com/lupidan/apple-signin-unity#manual-entitlements-setup

Firebase Auth와 연동하려면 Firebase Authentication의 Sign-in method에서 Apple을 사용 설정한다. iOS에서 사용하려면 추가적인 설정은 필요없다.

Apple로 로그인 구현


일단 간단하게 사용중인 페이지에 Apple로 로그인을 GitHub에서 설명하는 그대로 구현했다.

SignInView.cs

using UnityEngine; using System.Collections.Generic; using System; using Firebase.Auth; using AppleAuth; using AppleAuth.Native; using AppleAuth.Enums; using AppleAuth.Extensions; using System.Text; using System.Security.Cryptography; using AppleAuth.Interfaces; public class SignInView : MonoBehaviour { private IAppleAuthManager _appleAuthManager; public override void OnClose() { } public override void OnOpen() { #if UNITY_IOS // Apple로 로그인 켜기 if (AppleAuthManager.IsCurrentPlatformSupported) { var deserializer = new PayloadDeserializer(); _appleAuthManager = new AppleAuthManager(deserializer); } #else // Apple로 로그인 끄기 #endif } private void Update() { _appleAuthManager?.Update(); } private void OnClickSignInWithApple() { // 로더 켜기 var rawNonce = GenerateRandomString(32); var nonce = GenerateSHA256NonceFromRawNonce(rawNonce); var loginArgs = new AppleAuthLoginArgs(LoginOptions.IncludeEmail | LoginOptions.IncludeFullName, nonce); _appleAuthManager.LoginWithAppleId( loginArgs, async credential => { try { var appleIdCredential = credential as IAppleIDCredential; var identityToken = Encoding.UTF8.GetString(appleIdCredential.IdentityToken); var authorizationCode = Encoding.UTF8.GetString(appleIdCredential.AuthorizationCode); var firebaseCredential = OAuthProvider.GetCredential( "apple.com", identityToken, rawNonce, authorizationCode); // 파이어베이스와 계정 연동 await FirebaseManager.Instance.Auth.SignInWithCredentialAsync(firebaseCredential); // 처음 Apple로 로그인시 이름이 있으면 파이어베이스 유저 업데이트 if (appleIdCredential.FullName != null) { var userName = appleIdCredential.FullName.ToLocalizedString(); var profile = new UserProfile(); profile.DisplayName = userName; await FirebaseManager.Instance.Auth.CurrentUser.UpdateUserProfileAsync(profile); } } catch (AggregateException ex) { // 로그인 실패 토스트 메세지 } catch (Exception ex) { // 로그인 실패 토스트 메세지 } finally { // 로더 끄기 } }, error => { var authorizationErrorCode = error.GetAuthorizationErrorCode(); switch (authorizationErrorCode) { case AuthorizationErrorCode.Canceled: break; case AuthorizationErrorCode.Unknown: case AuthorizationErrorCode.InvalidResponse: case AuthorizationErrorCode.NotHandled: case AuthorizationErrorCode.Failed: // 로그인 실패 토스트 메세지 break; } // 로더 끄기 }); } private string GenerateRandomString(int length) { const string charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz-._"; var cryptographicallySecureRandomNumberGenerator = new RNGCryptoServiceProvider(); var result = string.Empty; var remainingLength = length; var randomNumberHolder = new byte[1]; while (remainingLength > 0) { var randomNumbers = new List<int>(16); for (var randomNumberCount = 0; randomNumberCount < 16; randomNumberCount++) { cryptographicallySecureRandomNumberGenerator.GetBytes(randomNumberHolder); randomNumbers.Add(randomNumberHolder[0]); } for (var randomNumberIndex = 0; randomNumberIndex < randomNumbers.Count; randomNumberIndex++) { if (remainingLength == 0) { break; } var randomNumber = randomNumbers[randomNumberIndex]; if (randomNumber < charset.Length) { result += charset[randomNumber]; remainingLength--; } } } return result; } private string GenerateSHA256NonceFromRawNonce(string rawNonce) { var sha = new SHA256Managed(); var utf8RawNonce = Encoding.UTF8.GetBytes(rawNonce); var hash = sha.ComputeHash(utf8RawNonce); var result = string.Empty; for (var i = 0; i < hash.Length; i++) { result += hash[i].ToString("x2"); } return result; } }

위 코드는 사용중인 코드에서 Apple로 로그인 부분만 가져온 코드라서 그대로 사용하면 컴파일 에러가 발생할 수 있습니다.

추가 내용


플러그인을 사용하니 Apple로 로그인 구현은 생각보다 어렵지 않았다.
Quick login도 있었지만 테스트 과정에서 Quick login은 필요하지 않다고 판단해서 구현하지 않았다.
Apple로 로그인은 있지만 로그아웃은 개발자가 구현할 수 없었다. Apple ID 사용 중단은 유저가 설정에서 Apple ID를 사용하지 않을 앱을 정해 로그아웃해야한다.
그리고 유저의 FullName은 처음으로 Apple로 로그인 할 때에만 가져오고 나머지는 null 값을 가져온다.
만약에 유저가 이메일 숨기기를 통해 Apple로 로그인을 한다면 유저의 이메일은 <unique-alphanumeric-string>@privaterelay.appleid.com과 같은 형식을 따르게 된다.

참고 자료


Sign in with Apple | Tools | Unity Asset Store

lupidan/apple-signin-unity

Authenticate Using Apple and Unity | Firebase

lupidan/apple-signin-unity

[Unity] Apple Login과 Firebase 인증

 

 

 

[출처]

velog.io/@jinuku/Unity%EC%97%90%EC%84%9C-Apple%EB%A1%9C-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B5%AC%ED%98%84

 

Unity에서 Apple로 로그인 구현

플러그인을 사용해서 Unity에서 Apple로 로그인을 쉽게 구현해보고 Firebase Auth와 연동합니다.

velog.io

 

반응형
Posted by blueasa
, |
ld: '/Users/tomykim/Documents/FacebookSDK/FacebookSDKs-iOS-4.28.0/FBSDKLoginKit.framework/FBSDKLoginKit(FBSDKLoginButton.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

 

위와같은 오류메세지가 뜬다면

 

Build Settings 에서 Enable Bitcode를 "No"로 바꿔주세요.



출처: https://tom7930.tistory.com/50 [Dr.kim의 나를 위한 블로그]

 

IOS SWIFT bitcode 오류 해결 (does not contain bitcode)

ld: '/Users/tomykim/Documents/FacebookSDK/FacebookSDKs-iOS-4.28.0/FBSDKLoginKit.framework/FBSDKLoginKit(FBSDKLoginButton.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode..

tom7930.tistory.com

 

 

[참조] gigas-blog.tistory.com/236

 

[Xcode] ENABLE_BITCODE

# Xcode11 Version 11.6 (11E708) 을 사용하고 있습니다. 은행권 보안 솔루션을 적용중에 아래와 같은 오류가 발생하였습니다. ld: '/Users/gigas/Documents/...)' does not contain bitcode. You must rebuild it..

gigas-blog.tistory.com

 

반응형
Posted by blueasa
, |

구글 플레이(Google Play)에 앱 배포 시 오류가 발생할 경우 해결 방법입니다.

 

오류 내용

업로드 실패

디버그가 가능한 APK를 업로드했습니다. 

보안상의 이유로 Google Play에 게시하기 전에 디버그를 사용 중지해야 합니다.

 

오류 발생 원인

이 오류의 발생 원인은 AndroidManifest.xml 파일의 debuggable 속성이 true로 지정된 상태로 APK 파일이 생성되었기 때문입니다.

 

 

해결방법

해결 방법은 간단합니다.

먼저 AndroidManifest.xml 파일을 열고 application 태그 속성의 debuggable을 false로 지정하여 저장합니다.

 

위의 설정이 완료되면 APK 파일을 다시 생성하여 구글 플레이에 업로드합니다.



출처: https://h5bak.tistory.com/279 [이준빈은 호박머리]

 

Google Play 디버그가 가능한 APK를 업로드했습니다.

구글 플레이(Google Play)에 앱 배포 시 오류가 발생할 경우 해결 방법입니다. 오류 내용 업로드 실패 디버그가 가능한 APK를 업로드했습니다. 보안상의 이유로 Google Play에 게시하기 전에 디버그를

h5bak.tistory.com

 

 
반응형
Posted by blueasa
, |