burningcarrot
Students
864
Reviews
52
Rating
5.0
(ํ) ์บ๋๋ค AAA ๊ฒ์ ์คํ๋์ค U์ฌ ๊ฒ์ ํ๋ก๊ทธ๋๋จธ
- PC/์ฝ์ AAA ์ก์ ์ด๋๋ฒค์ฒ ๊ฒ์ ํ๋ก์ ํธ ์ฐธ์ฌ
(์ ) ๊ตญ๋ด ๊ฒ์์ฌ N์ฌ ์๋ฒ ํ๋ก๊ทธ๋๋จธ
- ์ธ๋ฆฌ์ผ MMORPG ๊ฒ์ ํ๋ก์ ํธ ์ฐธ์ฌ
(์ ) ๊ตญ๋ด ๊ฒ์์ฌ N์ฌ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋๋จธ
- ์ธ๋ฆฌ์ผ MMORPG ๊ฒ์ ํ๋ก์ ํธ ์ฐธ์ฌ
(์ ) ๊ตญ๋ด ๊ฒ์์ฌ N์ฌ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋๋จธ
- ์ ๋ํฐ ์บ์ฃผ์ผ/๋ฏธ๋์ฝ์ด ๊ฒ์ ํ๋ก์ ํธ ์ฐธ์ฌ
(์ ) ๊ตญ๋ด ๋๊ธฐ์ S๊ทธ๋ฃน ์ํํธ์จ์ด ์์ง๋์ด
- S๊ทธ๋ฃน ๊ณ์ด์ฌ ์ ์ฐ ์์คํ ํ๋ก์ ํธ ์ฐธ์ฌ
์๋ ํ์ธ์. ๊ฒ์ ๊ฐ๋ฐ์ BurningCarrot ๋ฒ๋์บ๋ฟ ์ ๋๋ค.
๊ฒ์์ ๊ฐ๋ฐํ๋ ์ฌ๋์ด ๋๊ณ ์ถ๋ค๋ ๋ง์์ผ๋ก
๋๊ธฐ์ ์ ํด์ฌํ ํ ๊ตญ๋ด ๊ฒ์ ํ์ฌ๋ฅผ ๊ฑฐ์ณ
ํ์ฌ๋ ํด์ธ ๊ฒ์ ์คํ๋์ค์์ ์ผํ๊ณ ์์ต๋๋ค.
ํ์ฌ ์ ๊ณ์ ๋ชธ๋ด๊ณ ์๋ ๋งํผ, ํ์ ์์ ์ฌ์ฉํ๋
์ค์ ๋ ธํ์ฐ์ ๊ธฐ๋ฒ์ ์ต๋ํ ๊ณต์ ๋๋ฆฌ๊ณ ์ ํฉ๋๋ค.
์ฌ๋ฌ๋ถ๊ณผ ๊ฐ์ด ๊ฒ์์ ์ข์ํ๊ณ ๋ง๋๋ ํ ์ฌ๋์ผ๋ก์,
์ ๊ฐ์๋ฅผ ์๊ฐ ํ์๋ ๋ชจ๋ ๋ถ๋ค์ด ๊ฐ์์ ๋ชฉํ์
ํ๊ฑธ์ ๋ ๋ค๊ฐ๊ฐ ์ ์๋ ์ ์ตํ ์๊ฐ์ด ๋์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
๐ฉ ๋ฌธ์ : burningcarrotstudio@gmail.com
๐ก๋ธ๋ก๊ทธ : https://blog.naver.com/burningcarrot
๐ก๋ธ๋ฐ์น : https://brunch.co.kr/@burningcarrot#works
๐ก์ค๋ ๋ : https://www.threads.com/@burning.carrot
๐กX(๊ตฌ ํธ์ํฐ) : https://x.com/burningcarrot10
Courses
Reviews
kabu03307216
ยท
Unity System Programming Pt.1 - All-in-one package of core systems for commercial game implementationUnity System Programming Pt.1 - All-in-one package of core systems for commercial game implementationrobocare4297
ยท
Unity System Programming Pt.1 - All-in-one package of core systems for commercial game implementationUnity System Programming Pt.1 - All-in-one package of core systems for commercial game implementationkykim33201941
ยท
Complete C++ for Job Success: 10 Years of Game Company Interview Questions & Real-World Cases (Basic Edition)Complete C++ for Job Success: 10 Years of Game Company Interview Questions & Real-World Cases (Basic Edition)- (Free) AAA Game Programmer Job and Career Change Guidebook
wonyounglarakang6355
ยท
Complete C++ for Job Success: 10 Years of Game Company Interview Questions & Real-World Cases (Basic Edition)Complete C++ for Job Success: 10 Years of Game Company Interview Questions & Real-World Cases (Basic Edition)
Posts
Q&A
UserDataManager ์ฝ๋ ์ง๋ฌธ์ ๋๋ค.
์๋ ํ์ธ์! BurningCarrot ๋ฒ๋์บ๋ฟ์ ๋๋ค. ๋ต๋ณ์ด ๋ฆ์ด ์ฃ์กํฉ๋๋ค. ๋ฌธ์ํด ์ฃผ์ ๋ด์ฉ์ ๋ต๋ณ ๋๋ฆฝ๋๋ค.C#์์ bool ๋ณ์๋ ๊ธฐ๋ณธ์ผ๋ก false๊ฐ์ด๊ธฐ ๋๋ฌธ์ PlayerPrefs์ ExistsSavedData๋ฅผ 1๋ก ์ ์ฅํด์ฃผ๊ณ , ์ ์ ๋ฐ์ดํฐ ๋ก๋ ์ PlayerPrefs์์ ์ ์ฅ๋ ๊ฐ์ ๊ฐ์ ธ์ ์ ์ฉํด ์ฃผ์ ์ผ ํฉ๋๋ค. ๋น์ฐํ ์๊ธฐ์ง๋ง ๊ฒ์์ ์ฌ์์ํ๋ฉด ExistsSavedData ๋ณ์๋ ๋ค์ false๊ฐ ๋์ด ์์ต๋๋ค.
- 0
- 2
- 27
Q&A
ํ์ด์ด๋ฒ ์ด์ค ์ด๋ฒคํธ ๋ก๊ทธ ์์ง๊ด๋ จ ์ง๋ฌธ์ ๋๋ค.
์๋ ํ์ธ์! BurningCarrot์ ๋๋ค. ๋ฌธ์ํด ์ฃผ์ ๋ด์ฉ์ ๋ต๋ณ ๋๋ฆฝ๋๋ค.์ฑ ์ญ์ ์ ์ญ์ ํ๋ ์ ์ ์ ๋ง์ง๋ง ์คํ ์ด์ง ๊ฐ์ ํจ๊ป ๋ฐ์๋ณด๊ณ ์ถ์๋ฐ ์ด๋ป๊ฒ ๊ตฌํํด์ผ ํ๋์ง ๊ถ๊ธํฉ๋๋ค.์ฑ ์ญ์ ์ ์ ๋ํฐ์์ ๋ณ๋๋ก ํธ์ถ๋๋ ์ฝ๋ฐฑ์ด ์๊ธฐ ๋๋ฌธ์ ์ด ๋ถ๋ถ์ ๊ตฌํ์ด ์ด๋ ค์ธ ๊ฒ ๊ฐ์ต๋๋ค.๋์ผํ ์ ์ ๊ฐ ์ฑ์ ์ค์นํ๊ณ ์ญ์ ํ ๋ค ๋ค์ ์ฌ์ค์นํ๊ณ ๋ ์ญ์ ํ ๋ค๋ฉด ์ค์นํ ์ ์ ๋ ์ด 2๋ช , ์ญ์ ํ ์ ์ ๋ ์ด 2๋ช ์ผ๋ก ๊ธฐ๋ก๋๋์ง ๊ถ๊ธํฉ๋๋ค.๋ค ํ์ด์ด๋ฒ ์ด์ค์ ์ฑ ์ญ์ ์ ๋ค์ ์ค์นํ๋ฉด ์๋ก์ด ์ ์ ๋ก ์ธ์ํ๋ค๊ณ ์๋ ค์ ธ ์์ต๋๋ค. ๋ค๋ง ์ ์ ๋ก๊ทธ์ธ ์ ๊ธฐ์กด์ ์ฌ์ฉํ๋ ์์ด๋๋ฅผ ์ด์ฉํ๋ฉด ๊ธฐ์กด์ ์ ์ฅ๋์๋ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ์ ์์ด ์ ์ ๊ฐ ๊ธฐ์กด์ ๋ณด์ ํ๋ ์ฌํ, ํ๋ ์ด ์ด๋ ฅ ๊ทธ๋๋ก ๋ค์ ํ๋ ์ดํ ์ ์์ต๋๋ค.
- 0
- 1
- 32
Q&A
ํ์ด์ด๋ฒ ์ด์ค ๊ด๋ จ ์ง๋ฌธ์ ๋๋ค.
์๋ ํ์ธ์! BurningCarrot์ ๋๋ค.์ฌ์ผ๋ก ์ธํ๋ฐ AI ์ธํด์ด ์ ํํ ๋ต๋ณ์ ํด์คฌ๋ค์.๐์ ๊ฐ ๋ฐ๋ก ๋ต๋ณ์ ๋๋ฆด ํ์๋ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ ๋ด์ฉ ์ฐธ๊ณ ํ์๋ฉด ๋๊ฒ ์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 39
Q&A
์ ์ /๋ฏธ์ Pt.3์์ OnClickClaimBtn ํธ์ถ ์ Sort ๋ถ๋ถ ํธ์ถ ๋์
์๋ ํ์ธ์! BurningCarrot์ ๋๋ค. ๋ฌธ์ํด ์ฃผ์ ๋ด์ฉ์ ๋ต๋ณ ๋๋ฆฝ๋๋ค.ํน์ AchievementUI ์คํฌ๋ฆฝํธ์ ์๋ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์๊น์? ํด๋น ์ฝ๋๊ฐ ์์ด์ผ OnAchievementProgressed ํจ์๊ฐ ์๋ํฉ๋๋ค.public class AchievementUI : BaseUI { //... private void OnEnable() { Messenger.Default.Subscribe(OnAchievementProgressed); } private void OnDisable() { Messenger.Default.Unsubscribe(OnAchievementProgressed); } //... }
- 0
- 1
- 67
Q&A
๊ตฌ๊ธ ํ๋ ์ด ์ฝ์ ์ฌ์ ์์ฝ ๋ฑ๋ก์ ๋ํด.
์๋ ํ์ธ์! BurningCarrot์ ๋๋ค.๋ชจ๋ ์ค์ ์ ๋ค ์๋ฃํ์ จ์์๋ "์ฌ์ ๋ฑ๋ก ์์" ๋ฒํผ๋ ํ์ฑํ๋์ง ์๋๊ฒ ๋ง์๊น์?์ฌ์ ๋ฑ๋ก ํ ์คํธ ํญ์์๋ ๋ ๊ฐ ํญ๋ชฉ ์ค ํ๋๋ ์ ํํ ์ํ์ด์ค๊น์?(์ฌ์ง)
- 0
- 2
- 71
Q&A
์ฐํธ ๊ธฐ๋ฅ์ ๋ํด ๊ถ๊ธํฉ๋๋ค.
์๋ ํ์ธ์! BurningCarrot์ ๋๋ค. ๋ฌธ์ํด ์ฃผ์ ๋ด์ฉ์ ๋ต๋ณ ๋๋ฆฝ๋๋ค.์ ์ ๊ฒฝ์ฐ Firestore DB์ UserMailData๋ผ๋ ์ปฌ๋ ์ ์ ๋ง๋ค๊ณ , ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์์ UI์ ํ์ํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์ฐํธํจ ์์คํ ์ ๊ตฌํํ์์ต๋๋ค. ํน์ ํ๋ ์ด์ด์๊ฒ ๋ณด์์ ์ฐํธ์ผ๋ก ์ ๋ฌํด์ผ ํ๋ค๋ฉด, Firestore DB ์ฝ์์์ ํด๋น ํ๋ ์ด์ด์ UserMailData์ ๋ณด์์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด ์ค๋๋ค. ๊ทธ๋ผ ํ๋ ์ด์ด๋ ๊ทธ ์ฐํธ์ ์ด์ด '๋ฐ๊ธฐ'๋ฅผ ํด๋ฆญํ๋ฉด ๋ณด์์ด ์ง๊ธ๋ฉ๋๋ค.๋ฌผ๋ก ์ด๋ด ๊ฒฝ์ฐ ์๊ฐ์๋ถ์ด ๊ฐ ํ๋ ์ด์ด๋ฅผ ์๋ณํ ์ ์๋ ๊ณ์ ์ ๋ณด(ex. ์ด๋ฉ์ผ)๋ฅผ ์ถ๊ฐ์ ์ผ๋ก Firestore DB์ ์์งํด ๋์ ์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฐ ๊ฐ์ธ์ ๋ณด๋ฅผ ์ ์ฅํ ๋๋ ๊ฐ์ธ์ ๋ณด ์ฒ๋ฆฌ๋ฐฉ์นจ ๋ฑ์ ์์ง๋ง๊ณ ์ ๋ช ์ํด์ผ ํ๊ณ , ๊ตฌ๊ธ/์ ํ ๊ฐ๋ฐ์ ์ฝ์์ ์ ์ ๊ฐ์ธ์ ๋ณด ์์ง ์ค์ ํ์ด์ง๋ ๊ฐ ํญ๋ชฉ๋ค์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ ํ๋์ด ์๋์ง ์ ํ์ธํด ์ฃผ์ ์ผ ํฉ๋๋ค.์ดํด๊ฐ ๋์ง ์๋ ๋ถ๋ถ์ด ์์ผ์๋ค๋ฉด ํธํ๊ฒ ๋ค์ ์ง๋ฌธํด ์ฃผ์๊ธธ ๋ฐ๋๋๋ค.
- 0
- 2
- 47
Q&A
41-์๊ฒฉ ๋ฆฌ์์ค ๋ค์ด๋ก๋ ๊ฐ์์ ํ๋ฐ์ ์ค์ตํ ํ ์ค์ณ๊ฐ ์์ต๋๋ค.
์๋ ํ์ธ์! BurningCarrot์ ๋๋ค. ๋ฌธ์ํด ์ฃผ์ ๋ด์ฉ์ ๋ต๋ณ ๋๋ฆฝ๋๋ค.์ด๋ฏธ์ง ๋ฆฌ์์ค ์ฒจ๋ถํด ๋๋ฆฝ๋๋ค. ์ฌ์ค ํด๋น ๊ฐ์๋ ์๊ฒฉ ๋ฆฌ์์ค๋ฅผ ๊ต์ฒดํด์ ์ฌ์ ๋ก๋ํ๋ฉด, ๊ต์ฒด๋ ์ด๋ฏธ์ง๋ก ์๋ก ๋ค์ด๋ก๋ ๋์ด ์ ์ฉ๋๋ค๋ ๊ฒ์ ๋ณด์ฌ๋๋ฆฌ๋ ๋ด์ฉ์ด๋ฏ๋ก ๋ค๋ฅธ ์ด๋ฏธ์ง๋ก ์๋ฌด๊ฑฐ๋ ๊ต์ฒดํ์ ์ ํ ์คํธ ํ์ ๋ ๋ฉ๋๋ค.๊ฐ์ฌํฉ๋๋ค.(ํ์ธํด ๋ดค๋๋ฐ ์ฌ๊ธฐ ์ด๋ฏธ์ง๋ฅผ ์ฒจ๋ถํ๋ฉด ๋ค์ด๋ก๋๊ฐ ๋์ง ์๋ค์. 41-์๊ฒฉ ๋ฆฌ์์ค ๋ค์ด๋ก๋ ๊ฐ์ ์ฒจ๋ถํ์ผ์ ๋ฃ์ด ๋ค์ ์ ๋ก๋ํด ๋๋ฆฌ๊ฒ ์ต๋๋ค. ํด๋น ๊ฐ์ ์ฒจ๋ถํ์ผ ๋ค์ ํ์ธ ๋ถํ ๋๋ฆฝ๋๋ค)(์ฌ์ง)
- 0
- 2
- 42
Q&A
๋ก์ปฌ ์๋ฆผ๊ณผ ๋ค๊ตญ์ด ์ง์์ ๋ํด ๊ถ๊ธํฉ๋๋ค.
์๋ ํ์ธ์! BurningCarrot์ ๋๋ค. ๋ฌธ์ํด ์ฃผ์ ๋ด์ฉ์ ๋ต๋ณ ๋๋ฆฝ๋๋ค.๋ก์ปฌ ์๋ฆผ์ ๊ฐ ์ด์ ์ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ๊ณต์ ๋๋ฆฌ๊ฒ ์ต๋๋ค.๋ก์ปฌ ์๋ฆผ sdk ๋ค์ด๋ก๋Package Manager์์ Mobile Notifications๋ก ๊ฒ์ํด์ ์ค์น์๋ ์ฝ๋๋ฅผ ์ฑ๊ธํด ๊ฒ์ ์ค๋ธ์ ํธ๋ก ์ ์ฉLocalNotifyType์ ์๊ฐ์๋ถ์ด ์๋ก์ด ๋ก์ปฌ ์๋ฆผ์ ์ถ๊ฐํ์ค ๋๋ง๋ค ํ์ ์ ์ถ๊ฐํ์๋ฉด ๋๊ฒ ์ต๋๋ค. ํํธ(์์) ์ถฉ์ , ๊ฐ์ฑ (๋ฝ๊ธฐ) ๋ฐ์ค ์ถฉ์ ๋ฑ ์๋ฆผ์ ์ข ๋ฅ๋ฅผ ์๋ฏธํ๋ ๊ฐ์ ๋๋ค. ๊ฐ ํ์ ๋ง๋ค ์ ์ฉํด ์ฃผ์ค ID๊ฐ์ ์ ์ ํ๊ฒ ์ค์ ํด ์ฃผ์ธ์. ์ ๋ ์์๋ก TypeA, TypeB, TypeC ์ด๋ฐ์์ผ๋ก ํ๊ธฐํด ๋์์ต๋๋ค. ๊ฒ์์ด ์ค๋จ๋๊ฑฐ๋ ์ข ๋ฃ๋ ๋ ๋๋ฐ์ด์ค ํ๋ซํผ์ ๋ฐ๋ผ ์๋ฆผ์ด ์คํ๋์ด์ผ ํ ์๊ฐ์ ๊ณ์ฐํด์ SetAOSNotification, SetIOSNotification ํจ์๋ฅผ ํธ์ถํ์๋ฉด ๋ ๊ฒ์ ๋๋ค. ์ ๋ํฐ ๋งค๋ด์ผ ๋งํฌ๋ ๊ฐ์ด ์ฒจ๋ถ ๋๋ฆฝ๋๋ค. https://docs.unity3d.com/Packages/com.unity.mobile.notifications@1.0/manual/index.html#if UNITY_ANDROID using Unity.Notifications.Android; #elif UNITY_IOS using Unity.Notifications.iOS; #endif using System.Collections; using System; public enum LocalNotifyType { TYPE_A, TYPE_B, TYPE_C } public class LocalNotificationManager : SingletonBehaviour { private string m_IOSTypeAID = string.Empty; private string m_IOSTypeBID = string.Empty; private string m_IOSTypeCID = string.Empty; protected override void Init() { base.Init(); #if UNITY_ANDROID InitAOS(); #elif UNITY_IOS InitIOS(); #endif } public void SetNotification(LocalNotifyType notifyType, string notiTitle, string notiText, int days, int hours, int minutes, int seconds) { #if UNITY_ANDROID SetAOSNotification(notifyType, notiTitle, notiText, days, hours, minutes, seconds); #elif UNITY_IOS SetIOSNotification(notifyType, notiTitle, notiText, days, hours, minutes, seconds); #endif } public void CancelAllNotification() { #if UNITY_ANDROID CancelAllAOSNotification(); #elif UNITY_IOS CancelAllIOSNotification(); #endif } #region AOS private void InitAOS() { #if UNITY_ANDROID AndroidNotificationCenter.Initialize(); var typeAChannel = new AndroidNotificationChannel() { Id = "AOS_TypeA_Id", Name = "AOS_TypeA_Channel", Importance = Importance.Default, Description = "AOS_TypeA_Notification", }; AndroidNotificationCenter.RegisterNotificationChannel(typeAChannel); var typeBChannel = new AndroidNotificationChannel() { Id = "AOS_TypeB_Id", Name = "AOS_TypeB_Channel", Importance = Importance.Default, Description = "AOS_TypeB_Notification", }; AndroidNotificationCenter.RegisterNotificationChannel(typeBChannel); var typeCChannel = new AndroidNotificationChannel() { Id = "AOS_TypeC_Id", Name = "AOS_TypeC_Channel", Importance = Importance.Default, Description = "AOS_TypeC_Notification", }; AndroidNotificationCenter.RegisterNotificationChannel(typeCChannel); #endif } private void SetAOSNotification(LocalNotifyType notifyType, string notiTitle, string notiText, int days, int hours, int minutes, int seconds) { #if UNITY_ANDROID var notification = new AndroidNotification(); notification.SmallIcon = "small_icon"; notification.LargeIcon = "large_icon"; notification.Title = notiTitle; notification.Text = notiText; notification.FireTime = DateTime.Now.AddDays(days).AddHours(hours).AddMinutes(minutes).AddSeconds(seconds); switch (notifyType) { case LocalNotifyType.TYPE_A: AndroidNotificationCenter.SendNotification(notification, "AOS_TypeA_Id"); break; case LocalNotifyType.TYPE_B: AndroidNotificationCenter.SendNotification(notification, "AOS_TypeB_Id"); break; case LocalNotifyType.TYPE_C: AndroidNotificationCenter.SendNotification(notification, "AOS_TypeC_Id"); break; default: break; } #endif } private void CancelAllAOSNotification() { #if UNITY_ANDROID AndroidNotificationCenter.CancelAllNotifications(); #endif } #endregion #region IOS private void InitIOS() { StartCoroutine(RequestAuthorization()); } private IEnumerator RequestAuthorization() { #if UNITY_IOS using (var req = new AuthorizationRequest(AuthorizationOption.Alert | AuthorizationOption.Badge, true)) { while (!req.IsFinished) { yield return null; }; string res = "\n RequestAuthorization: \n"; res += "\n finished: " + req.IsFinished; res += "\n granted : " + req.Granted; res += "\n error: " + req.Error; res += "\n deviceToken: " + req.DeviceToken; Logger.Log(res); } #endif yield return null; } private void SetIOSNotification(LocalNotifyType notifyType, string notiTitle, string notiText, int days, int hours, int minutes, int seconds) { #if UNITY_IOS var timeTrigger = new iOSNotificationTimeIntervalTrigger() { TimeInterval = new TimeSpan(days, hours, minutes, seconds), Repeats = false }; var identifier = string.Empty; var categoryIdentifier = string.Empty; var threadIdentifier = string.Empty; switch (notifyType) { case LocalNotifyType.TYPE_A: identifier = "IOS_TypeA_Id"; categoryIdentifier = "Category_TypeA"; threadIdentifier = "Thread_TypeA"; m_IOSTypeAID = identifier; break; case LocalNotifyType.TYPE_B: identifier = "IOS_TypeB_Id"; categoryIdentifier = "Category_TypeB"; threadIdentifier = "Thread_TypeB"; m_IOSTypeBID = identifier; break; case LocalNotifyType.TYPE_C: identifier = "IOS_TypeC_Id"; categoryIdentifier = "Category_TypeC"; threadIdentifier = "Thread_TypeC"; m_IOSTypeCID = identifier; break; default: break; } var notification = new iOSNotification() { Identifier = identifier, Title = notiTitle, Body = notiText, ShowInForeground = true, ForegroundPresentationOption = (PresentationOption.Alert | PresentationOption.Sound), CategoryIdentifier = categoryIdentifier, ThreadIdentifier = threadIdentifier, Trigger = timeTrigger, }; iOSNotificationCenter.ScheduleNotification(notification); #endif } private void CancelIOSNotification(LocalNotifyType notifyType) { #if UNITY_IOS var notifyID = string.Empty; switch (notifyType) { case LocalNotifyType.TYPE_A: notifyID = m_IOSTypeAID; break; case LocalNotifyType.TYPE_B: notifyID = m_IOSTypeBID; break; case LocalNotifyType.TYPE_C: notifyID = m_IOSTypeCID; break; default: break; } iOSNotificationCenter.RemoveScheduledNotification(notifyID); #endif } private void CancelAllIOSNotification() { #if UNITY_IOS iOSNotificationCenter.RemoveAllScheduledNotifications(); iOSNotificationCenter.RemoveAllDeliveredNotifications(); #endif } #endregion }CSV ํ์ผ ๋ด ๋ฌธ์์ด์์ ,CSVํ์ผ์์ ๊ทธ๋ฅ ์ ์ฒด ๋ฌธ์์ด์ ""๋ก ๊ฐ์ธ์ฃผ์๋ฉด ๋ฉ๋๋ค. "์๋ ํ์ธ์, BurningCarrot์ ๋๋ค." ์ด๋ ๊ฒ ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
- 0
- 2
- 51
Q&A
ํตํฉ ์์
์๋ ํ์ธ์! BurningCarrot์ ๋๋ค. ๋ฌธ์ํด ์ฃผ์ ๋ด์ฉ์ ๋ต๋ณ ๋๋ฆฝ๋๋ค.Pt.2์ ํตํฉ ์ด์ ์ ์ ๊ณตํด ๋๋ฆฌ๋ ค๋ฉด Pt.1์ ์ด์ ๋ ์ ๊ณตํด ๋๋ ค์ผ ํ๊ณ (Pt.1&2 ๋ชจ๋, Pt.2๋ง ๋ค์ผ์๋ ๋ถ ์ฌ์ด์ ํํ์ฑ ๋ฌธ์ ), ์๊ฐ์ ๋ถ๋ค๋ง๋ค ๊ฐ์ข ์ธ๋ถ SDK ๋ฒ์ ์ ์์ดํจ์ผ๋ก ์ธํด ๋น๋ ์๋ฌ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ ์ ๊ณตํด ๋๋ฆฌ์ง ์๊ณ ์์ต๋๋ค. ์ํด ๋ถํ ๋๋ฆฝ๋๋ค.๐๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 40
Q&A
๊ตฌ๊ธ AD ๋ฏธ๋์์ด์
์๋ ํ์ธ์! BurningCarrot์ ๋๋ค. ๋ฌธ์ํด ์ฃผ์ ๋ด์ฉ์ ๋ต๋ณ ๋๋ฆฝ๋๋ค.Admob ๋ฏธ๋์์ด์ ์ ๋ํ ๋ฌธ์๋ ํด๋น ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์๋ฉด ๋ฉ๋๋ค.https://developers.google.com/admob/unity/mediation?hl=ko๊ธฐ๋ณธ ๊ตฌํ ์๋ฆฌ๋๋ด๊ฐ ํฌํจ์ํค๊ณ ์ ํ๋ ๊ด๊ณ ๋คํธ์ํฌ ๋ฏธ๋์์ด์ SDK ์ถ๊ฐ ์ค์นhttps://developers.google.com/admob/unity/choose-networks?hl=ko๊ด๊ณ ๋งค๋์ ์ด๊ธฐํ ์ฝ๋์ ๋ฏธ๋์์ด์ ์ด๋ํฐ ์ด๊ธฐํ ์ฝ๋ ์ถ๊ฐ MobileAds.Initialize((InitializationStatus initializationStatus) => { Dictionary map = initializationStatus.getAdapterStatusMap(); foreach (KeyValuePair keyValuePair in map) { string className = keyValuePair.Key; AdapterStatus status = keyValuePair.Value; switch (status.InitializationState) { case AdapterState.NotReady: // The adapter initialization did not complete. Logger.Log($"Adapter: {className} is not ready."); break; case AdapterState.Ready: // The adapter was successfully initialized. Logger.Log($"Adapter: {className} is initialized."); break; } } });
- 0
- 2
- 59




