ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2022ǯ02·î11Æü(¶â) 13:31:36ÍúÎò
¡¡FireBase¤ÈUnity¤ÎÏ¢·È¼«ÂΤˤĤ¤¤Æ¤Ï¸ø¼°¥ê¥Õ¥¡¥ì¥ó¥¹¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
Unity ¥×¥í¥¸¥§¥¯¥È¤Ë Firebase ¤òÄɲ乤ë
https://firebase.google.com/docs/unity/setup?hl=ja
¡¡Unity¤ÎStreamingAssetsÆâ¤ËFireBase¤ËÅÐÏ¿¤·¤Æ¤¢¤ëPNG²èÁü¥Ç¡¼¥¿¤òTexture¤È¤·¤Æ¥À¥¦¥ó¥í¡¼¥É¤·¤Þ¤¹¡£
FireBaseDownLoader.cs
¡¡Unity ¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬Êݸ¤µ¤ì¤Æ¤¤¤ë¥Ñ¥¹¤ò¼èÆÀ¤·¤Þ¤¹¡£
¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ë¤è¤êÊݸÀ褬°Û¤Ê¤ë¤¿¤á¡¢¼Â¹Ô¤·¤¿¥Ç¥Ð¥¤¥¹¤Ë¤è¤ê¡¢¥Ñ¥¹¤Î¾ðÊó¤â°Û¤Ê¤ê¤Þ¤¹¡£
// ¥í¡¼¥«¥ë¤Î¥Ñ¥¹(ÊݸÀè)¤Î»ØÄê string local_url = Application.dataPath + "/StreamingAssets/" + fileName + ".png";
»²¹Í¥µ¥¤¥È
Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Application.dataPath
https://docs.unity3d.com/ja/current/ScriptReferenc...
Qiita @w_yang ÍÍ
unity¤Çplatform¤Ë¤è¤Ã¤Æ¼èÆÀ¤Ç¤¤ë¥Ñ¥¹
https://qiita.com/w_yang/items/8458cd790607d14b1b3...
¡¡FireBase ¤ËÍѰդµ¤ì¤Æ¤¤¤ë API ¤Î£±¤Ä¤Ç¤¢¤ê¡¢FirebaseStorage ¥¯¥é¥¹¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥É¤Î£±¤Ä¤Ç¤¹¡£
¥Ç¥Õ¥©¥ë¥È¤Î Firebase.FirebaseApp ¤Ç½é´ü²½¤µ¤ì¤¿ FirebaseStorage ¥¤¥ó¥¹¥¿¥ó¥¹¤òÊÖ¤·¡¢ÍøÍѤǤ¤ë¾õÂ֤ˤ·¤Þ¤¹¡£
// FirebaseStorage ¤Î½é´ü²½ FirebaseStorage storage = FirebaseStorage.DefaultInstance;
»²¹Í¥µ¥¤¥È
Firebase ¥Þ¥Ë¥å¥¢¥ë
FirebaseStorage.DefaultInstance
https://firebase.google.com/docs/reference/unity/c...
¡¡FireBase ¤ËÍѰդµ¤ì¤Æ¤¤¤ë API ¤Î£±¤Ä¤Ç¤¢¤ê¡¢FirebaseStorage ¥¯¥é¥¹¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥É¤Î£±¤Ä¤Ç¤¹¡£
GetReferenceFromUrl ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢°ú¿ô¤Ç»ØÄꤷ¤¿ URL ¤ò»ØÄê¤·ÍøÍѤǤ¤ë¾õÂ֤ˤ·¤Þ¤¹¡£Ìá¤êÃÍ¤Ï StorageReference ·¿¤Ë¤Ê¤ê¤Þ¤¹¡£
// °ú¿ô¤Ç»ØÄꤷ¤¿ URL ¤ò»ØÄê¤·ÍøÍѤǤ¤ë¾õÂ֤ˤ¹¤ë StorageReference gs_reference = storage.GetReferenceFromUrl("gs://"¼«Ê¬¤ÎFireBase¤Î¥¢¥É¥ì¥¹".appspot.com/"¥Õ¥©¥ë¥À̾¡£¤³¤³¤Ç¤ÏTexture/" + fileName + ".png");
»²¹Í¥µ¥¤¥È
Firebase ¥Þ¥Ë¥å¥¢¥ë
FirebaseStorage.GetReferenceFromUrl
https://firebase.google.com/docs/reference/android...
¡¡FireBase ¤ËÍѰդµ¤ì¤Æ¤¤¤ë API ¤Î£±¤Ä¤Ç¤¢¤ê¡¢StorageReference ¥¯¥é¥¹¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥É¤Î£±¤Ä¤Ç¤¹¡£
GetFileAsync ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢È󯱴ü½èÍý¤Ë¤è¤Ã¤Æ FireBase ¤«¤é¥Ç¡¼¥¿¤Î¥À¥¦¥ó¥í¡¼¥É¤ò¹Ô¤¤¡¢¥á¥½¥Ã¥É¤Î°ú¿ô¤Ç»ØÄꤷ¤¿¥Ñ¥¹¤Ë¥Ç¡¼¥¿¤òÊݸ¤·¤Þ¤¹¡£
¡¡Ìá¤êÃͤȤ·¤Æ Task ¤¬ÍѰդµ¤ì¤Æ¤ª¤ê¡¢½èÍý¤Î·ë²Ì¤òÄÌÃΤ¹¤ëµ¡Ç½¤¬¤¢¤ê¤Þ¤¹¡£
º£²ó¤Ï¤½¤Îµ¡Ç½¤òÍøÍѤ·¡¢¥À¥¦¥ó¥í¡¼¥É¤Ë¼ºÇÔ¤·¤Æ¤ª¤é¤º¡¢½èÍý¤Î¥¥ã¥ó¥»¥ë¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Î¤ß¡¢¥À¥¦¥ó¥í¡¼¥É¤ÎÀ®¸ù¤ò Debug.Log ¥á¥½¥Ã¥É¤òÍøÍѤ·¤ÆÉ½¼¨¤·¤Æ¤¤¤Þ¤¹¡£
¡¡// FireBase¤«¤é¥Ç¡¼¥¿¤ò¥À¥¦¥ó¥í¡¼¥É¤·¡¢°ú¿ô¤Ç»ØÄꤷ¤¿¥í¡¼¥«¥ë¤Î¥Ñ¥¹(¥Õ¥©¥ë¥À)¤ËÆþ¤ì¤ë ¡¡gs_reference.GetFileAsync(local_url).ContinueWith(task => { ¡¡¡¡¡¡// ½èÍý¤Ë¼ºÇÔ¤·¤Æ¤ª¤é¤º¡¢¤«¤Ä¡¢½èÍý¤ò¥¥ã¥ó¥»¥ë¤·¤Æ¤¤¤Ê¤¤¾ì¹ç ¡¡¡¡if (!task.IsFaulted && !task.IsCanceled) { Debug.Log("File downloaded."); isLoad = false; } });
»²¹Í¥µ¥¤¥È
Firebase ¥Þ¥Ë¥å¥¢¥ë
Firebase.Storage.StorageReference.GetFileAsync
https://firebase.google.com/docs/reference/unity/c...
¡¡°ú¿ô¤Ë»ØÄꤷ¤¿¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤ò³«¤¡¢¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ¤ò¥Ð¥¤¥ÈÇÛÎó¤ËÆÉ¤ß¼è¤Ã¤¿¸å¡¢¥Õ¥¡¥¤¥ë¤òÊĤ¸¤Þ¤¹¡£
// ¥í¡¼¥É¤·¤¿¤¤¥Õ¥¡¥¤¥ë¤Î¤¢¤ë¥í¡¼¥«¥ëÆâ¤Î¥Ñ¥¹¤ò»ØÄê string local_url = Application.dataPath + "/StreamingAssets/" + "¥À¥¦¥ó¥í¡¼¥É¤·¤¿¥Õ¥¡¥¤¥ë¤Î̾Á°¤ò»ØÄꤷ¤Þ¤¹" + ".png"; // ¥Õ¥¡¥¤¥ë¤ò¥Ð¥¤¥ÈÇÛÎó¤ËÆÉ¤ß¼è¤ë byte[] imgData = File.ReadAllBytes(local_url);
»²¹Í¥µ¥¤¥È
MicroSoft
File.ReadAllBytes
https://docs.microsoft.com/ja-jp/dotnet/api/system...
¡¡PNG / JPG¡Ê¤Þ¤¿¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë·Á¼°¡Ë¤Î²èÁü¤Î¥Ð¥¤¥ÈÇÛÎó¤ò¥Æ¥¯¥¹¥Á¥ã(Texrue2D ·¿)¤Ë¥í¡¼¥É¤·¤Þ¤¹¡£
°ú¿ô¤Ë¤Ï²èÁü¥Ç¡¼¥¿¤Î¥Ð¥¤¥ÈÇÛÎó¤È¡¢¥Ô¥¯¥»¥ë¥Ç¡¼¥¿¤ÎÆÉ¤ß¹þ¤ßµö²ÄÀßÄê¤ò bool ·¿(½é´üÃÍ¤Ï false)¤ò»ØÄꤷ¤Þ¤¹¡£
// ¥Ð¥¤¥ÈÇÛÎó¤Î¾ðÊó¤ò¥Æ¥¯¥¹¥Á¥ã¤ËÊÑ´¹ texture.LoadImage(imgData, false);
»²¹Í¥µ¥¤¥È
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
ImageConversion.LoadImage
https://docs.unity3d.com/ja/current/ScriptReferenc...
¡¡¥Æ¥¯¥¹¥Á¥ã¤ò¸µ¤Ë¡¢¿·¤·¤¤ Sprite ¤òºîÀ®¤¹¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£°ú¿ô¤Î¥ª¡¼¥Ð¡¼¥í¡¼¥É¤¬Ê£¿ôÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¡£
¡¡// ¥Æ¥¯¥¹¥Á¥ã¤ò¸µ¤Ë Sprite ¤ò¿·µ¬ºîÀ®¡£¥µ¥¤¥º¤È Pivot ¤ò»ØÄê sprite = Sprite.Create(texture, new Rect(0.0f, 0.0f, texture.width, texture.height), new Vector2(0.5f, 0.5f));
»²¹Í¥µ¥¤¥È
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Sprite.Create
https://docs.unity3d.com/jp/current/ScriptReferenc...
¡¡°Ê¾å¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ³Îǧ¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- Áí¹ç
¥³¥á¥ó¥È¤ò¤«¤¯