Unity¤Ë´ØÏ¢¤¹¤ëµ­»ö¤Ç¤¹

³«È¯´Ä¶­


¡¡Unity 6000.0.32f1  


¤Ï¤¸¤á¤Ë


¡¡Unity ¤ÎÈóƱ´ü½èÍý¤ò°·¤¦ºÝ¤Ë¤Ï¡¢½¾Íè¤Î¥³¥ë¡¼¥Á¥ó¤Î¤Û¤«¤Ë C# ¤Î Task ¥Ù¡¼¥¹¤Î¥¢¥×¥í¡¼¥Á(async/await)¤òÍѤ¤¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
¤³¤Îµ­»ö¤Ç¤Ï¡¢UniTask ¤ò»ÈÍѤ·¤ÆÈóƱ´ü½èÍý¤ò´ÉÍý¤·¤Ä¤Ä¡¢InstantiateAsync ¤È AsyncInstantiateOperation.SetIntegrationTimeMS ¤òÁȤ߹ç¤ï¤»¤¿¥µ¥ó¥×¥ë¥³¡¼¥É¤ò¾Ò²ð¤·¤Þ¤¹¡£

¡¡¤Þ¤¿¡¢MonoBehaviour.destroyCancellationToken ¤ò³èÍѤ·¤¿¥­¥ã¥ó¥»¥ë½èÍý¤Ë¤Ä¤¤¤Æ¤â²òÀ⤷¡¢¥³¥ë¡¼¥Á¥ó¤È¤Î°ã¤¤¤Ë¤Ä¤¤¤ÆÈæ³Ó¤·¤Þ¤¹¡£


UniTask ¤Î´ðÁÃÃμ±


¡¡UniTask ¤Ï¡¢Unity ¸þ¤±¤Î·ÚÎ̤ÊÈóƱ´ü½èÍý¥é¥¤¥Ö¥é¥ê¤Ç¤¹¡£

¡¡°Ê²¼¤ÎÆÃħ¤¬¤¢¤ê¤Þ¤¹¡£

¡¡¡¦ÈóƱ´ü¥¿¥¹¥¯¥Ù¡¼¥¹¤Î½èÍý´ÉÍý
¡¡¡¦¥³¥ë¡¼¥Á¥ó¤è¤ê¤â´Ê·é¤Ç½ÀÆð¤Êµ­½Ò
¡¡¡¦Unity ¤ÎÆÃÄ굡ǽ¡ÊAsyncOperation ¤Ê¤É¡Ë¤ÈÏ¢·È



¡¡UniTask ¤ò¥×¥í¥¸¥§¥¯¥È¤ËƳÆþ¤¹¤ë¤Ë¤Ï¡¢°Ê²¼¤Î¼ê½ç¤ò¼Â¹Ô¤·¤Þ¤¹¡£

¡¡£±¡¥Unity Package Manager ¤ò³«¤¯¡£

¡¡£²¡¥¥Ü¥¿¥ó¤«¤é "Add package from git URL..." ¤òÁªÂò¡£

¡¡£³¡¥°Ê²¼¤Î URL ¤òÆþÎϤ·¤Æ¥¤¥ó¥¹¥È¡¼¥ë
¡¡¡¡¡¡https://github.com/Cysharp/UniTask.git?path=src/UniTask


ÈóƱ´üÀ¸À®½èÍý¤Î¥á¥ê¥Ã¥È


¡¡ Unity 2022.3.20f1 ¤è¤ê¡¢ÈóƱ´ü½èÍý¤Ë¤è¤ëÀ¸À®¤¬²Äǽ¤Ê InstantiateAsync ¥á¥½¥Ã¥É¤¬Äɲ䵤ì¤Þ¤·¤¿¡£(¤Û¤«¤Ë¤â¤¤¤¯¤Ä¤«¤Î¥á¥½¥Ã¥É¤¬Äɲ䵤ì¤Æ¤¤¤Þ¤¹¡£)

Unity Releases
Unity 2022.3.20
https://unity.com/ja/releases/editor/whats-new/202...



¡¡¥×¥ì¥Ï¥Ö¤òÍøÍѤ·¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®¤Ï Instantiate ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¹Ô¤¤¤Þ¤¹¤¬¡¢¤³¤Î¾ì¹ç¡¢Ê£¿ô¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®¤ò¤Þ¤È¤á¤Æ¹Ô¤¦¤È¡¢½èÍý¤¬½Å¤¯¤Ê¤ë(²èÌ̤¬¥«¥¯¤Ä¤¯)¤³¤È¤¬ÌäÂê¤Ç¤·¤¿¡£
InstantiateAsync ¥á¥½¥Ã¥É¤ÏÈóƱ´ü½èÍý¤È¤·¤Æ¥×¥ì¥Ï¥Ö¤ÎÀ¸À®¤¬²Äǽ¤Ë¤Ê¤ë¤¿¤á¡¢¤³¤Î¥Ç¥á¥ê¥Ã¥È¤ò²óÈò¤·¤ÆÀ¸À®½èÍý¤ò¹Ô¤¦¤³¤È¤¬²Äǽ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡¤¿¤À¤·¡¢Ä̾ï¤Î Instantiate ¥á¥½¥Ã¥É¤è¤ê¤ÏÉé²Ù¤¬¹â¤¤¤¿¤á¡¢±¿ÍѤˤÏÃí°Õ¤¬É¬Íפˤʤê¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢Instantiate ¥á¥½¥Ã¥É¤òñ½ã¤Ë InstantiateAsync ¥á¥½¥Ã¥É¤ËÃÖ¤­´¹¤¨¤ì¤Ð¤¤¤¤¡¢¤È¤¤¤¦¤ï¤±¤Ç¤Ï¤Ê¤¤¡¢¤È¤¤¤¦¤³¤È¤Ç¤¹¡£

Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Object.InstantiateAsync
https://docs.unity3d.com/6000.0/Documentation/Scri...


¡¡
¡¡InstantiateAsync ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®¤ò¹Ô¤¦¤È¡¢À¸À®½èÍý¼«ÂΤÏÊÂÎó¤Ç¹Ô¤ï¤ì¤Þ¤¹¡£
¤½¤·¤ÆÀ¸À®¤µ¤ì¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¤½¤Î¤¢¤È¤Ë Awake ¥á¥½¥Ã¥É¤¬¸Æ¤Ð¤ì¤Þ¤¹¤¬¡¢¤³¤ì¤Ï¡¢¤Þ¤È¤á¤Æ¥á¥¤¥ó¥¹¥ì¥Ã¥É¤Ç¸Æ¤Ð¤ì¤Þ¤¹¡£

¡¡¤½¤Î¤¿¤áÂçÎ̤ËÀ¸À®¤ò¹Ô¤¦¤È¡¢¤¿¤È¤¨ÈóƱ´ü½èÍý¤Ç¤¢¤Ã¤Æ¤â Awake ¥á¥½¥Ã¥É¤¬ÂçÎ̤˽èÍý¤µ¤ì¤Æ¤·¤Þ¤Ã¤Æ¡¢·ë²ÌŪ¤Ë²¸·Ã¤ò¼õ¤±¤é¤ì¤Ê¤¤¾õ¶·¤¬È¯À¸¤·¤Þ¤¹¡£

¡¡¤½¤ì¤ò²óÈò¤¹¤ë¤¿¤á¡¢AsyncInstantiateOperation.SetIntegrationTimeMS ¥á¥½¥Ã¥É¤¬Äɲ䵤ì¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤Ï°ú¿ô¤Ç»ØÄꤷ¤¿¥ß¥êÉÿô¤òĶ¤¨¤ë¤È¡¢½ªÎ»¤·¤Æ¤¤¤Ê¤¤ Awake ¥á¥½¥Ã¥É¤Ï¡¢¼¡¤Î¥Õ¥ì¡¼¥à¤Ë¤Æ²ò·è¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

Unity ¸ø¼°Æ°²è
¡ÚUnity¡ÛÈóƱ´ü¤Ë¥¤¥ó¥¹¥¿¥ó¥¹¤òÂçÎÌÀ¸À®¡ª¿· API "InstantiateAsync" ¤ò»È¤Ã¤Æ¤ß¤è¤¦¡ª
https://www.youtube.com/shorts/Q9K-3zkEijQ

Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
AsyncInstantiateOperation.SetIntegrationTimeMS
https://docs.unity3d.com/6000.0/Documentation/Scri...


Ä̾ï¤Î¥×¥ì¥Ï¥Ö¤ò»ÈÍѤ·¤¿¥µ¥ó¥×¥ë¥³¡¼¥É


¡¡°Ê²¼¤Ï¡¢Ä̾ï¤Î¥×¥ì¥Ï¥Ö¤ò»ÈÍѤ·¤Æ¥ª¥Ö¥¸¥§¥¯¥È¤ò°ìÄê´Ö³Ö¤ÇÀ¸À®¤·¡¢UniTask ¤Î¥­¥ã¥ó¥»¥ë½èÍý¤â¼ÂÁõ¤·¤¿Îã¤Ç¤¹¡£
¥­¥ã¥ó¥»¥ë½èÍý¤Ë¤Ä¤¤¤Æ¤Ï MonoBehaviour.destroyCancellationToken ¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£
Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
MonoBehaviour-destroyCancellationToken
https://docs.unity3d.com/ja/current/ScriptReferenc...


using UnityEngine;
using Cysharp.Threading.Tasks;
using System.Threading;

public class AsyncSpawner : MonoBehaviour
{
    [SerializeField] private GameObject prefab;
    [SerializeField] private int spawnCount = 10;
    [SerializeField] private float spawnInterval = 1.0f;


    private void Start()
    {
        SpawnObjectsAsync(destroyCancellationToken).Forget();
    }

    private async UniTaskVoid SpawnObjectsAsync(CancellationToken cancellationToken)
    {
        for (int i = 0; i < spawnCount; i++)
        {
            // À¸À®
            GameObject instance = Instantiate(prefab);

            // ÇÛÃ֤Ƚé´ü²½
            instance.transform.position = new Vector3(i * 2, 0, 0);

            // »ØÄê´Ö³Ö¤ÇÂÔµ¡
            await UniTask.Delay(System.TimeSpan.FromSeconds(spawnInterval), cancellationToken: cancellationToken);
        }
    }
}

¡¡¥³¡¼¥É¤Î¥Ý¥¤¥ó¥È¤È¤·¤Æ¤Ï¡¢À¸À®½èÍý¼«ÂΤÏƱ´ü½èÍý¤Ç¤¢¤ë Instantiate ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£
¤Þ¤¿¡¢Addressables ¤ò»È¤ï¤º¡¢Ä¾ÀÜ¥×¥ì¥Ï¥Ö¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤«¤é»ØÄꤷ¤ÆÅÐÏ¿¤·¤Æ¤¤¤Þ¤¹¡£

¡¡¥­¥ã¥ó¥»¥ë½èÍý¤Ë¤Ä¤¤¤Æ¤Ï¡¢destroyCancellationToken ¤ò»ÈÍѤ·¤Æ¡¢UniTask ¤¬ÇË´þ»þ¤ËÃæÃǤǤ­¤ë¤è¤¦¤Ë¥Ï¥ó¥É¥ê¥ó¥°¤·¤Æ¤¤¤Þ¤¹¡£

¡¡ÈóƱ´ü½èÍý¤ÎÀ©¸æ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥³¥ë¡¼¥Á¥ó¤Ç¤Ï¤Ê¤¯ UniTask.Delay ¤òÍøÍѤ·¤Æ°ìÄê´Ö³Ö¤ÇÀ¸À®¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£


¥³¥ë¡¼¥Á¥ó¤È¤Î°ã¤¤


¡¡¾åµ­¤ÈƱ¤¸½èÍý¤ò¥³¥ë¡¼¥Á¥ó¤Ç¼ÂÁõ¤¹¤ë¤È°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
Äɲä·¤¿¤ê¡¢½¤Àµ¤·¤¿Éôʬ¤À¤±¤òÈ´¿è¤·¤Þ¤¹¡£


using System.Collections;

private void Start()
{
    StartCoroutine(SpawnObjectsCoroutine);
}

private IEnumerator SpawnObjectsCoroutine()
{
    for (int i = 0; i < spawnCount; i++)
    {
        GameObject instance = Instantiate(prefab);
        instance.transform.position = new Vector3(i * 2, 0, 0);
        yield return new WaitForSeconds(spawnInterval);
    }
}

¡¡¤â¤·¤â¤³¤Î¥³¥ë¡¼¥Á¥ó¤ò¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎÇË´þ°Ê³°¤Ç¤âÅÓÃæ¤ÇÄä»ß¤µ¤»¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢¾åµ­¤Î½èÍý¤Ç¤ÏÄä»ß¤Ç¤­¤Þ¤»¤ó¡£
²¼µ­¤Î¤è¤¦¤Ê¡¢ÊÑ¿ô¤Ë½èÍý¤òÂåÆþ¤¹¤ë·Á¤Ç½èÍý¤òºî¤ë¤³¤È¤Ç¡¢ÅÓÃæ¤ÇÄä»ß¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡½ñ¼°¤Ï°Û¤Ê¤ê¤Þ¤¹¤¬¡¢IEnumerator ·¿¤È Coroutine ·¿¤Î¤É¤Á¤é¤Ç¤âÂбþ¤Ç¤­¤Þ¤¹¡£

private IEnumerator coroutine;

private void Start()
{
    coroutine = SpawnObjectsCoroutine();
    StartCoroutine(SpawnObjectsCoroutine);
}

// ¥³¥ë¡¼¥Á¥ó¤òÅÓÃæ¤ÇÄä»ß¤¹¤ë¥á¥½¥Ã¥É
public void StopSpawning()
{
    StopCoroutine(spawnCoroutine);
}


private Coroutine coroutine;

private void Start()
{
    coroutine = StartCoroutine(SpawnObjectsCoroutine);
}

// ¥³¥ë¡¼¥Á¥ó¤òÅÓÃæ¤ÇÄä»ß¤¹¤ë¥á¥½¥Ã¥É
public void StopSpawning()
{
    if (spawnCoroutine != null)
    {
        StopCoroutine(spawnCoroutine);
        spawnCoroutine = null;
    }
}

Addressables ¤òÍøÍѤ·¤¿¥µ¥ó¥×¥ë¥³¡¼¥É


¡¡°Ê²¼¤Ï¡¢Addressables ¤ò»ÈÍѤ·¤Æ¥ª¥Ö¥¸¥§¥¯¥È¤ò°ìÄê´Ö³Ö¤ÇÈóƱ´üŪ¤ËÀ¸À®¤·¡¢¥­¥ã¥ó¥»¥ë½èÍý¤â¼ÂÁõ¤·¤¿Îã¤Ç¤¹¡£
¤³¤Á¤é¤Ç¤Ï InstantiateAsync ¥á¥½¥Ã¥É¤È AsyncInstantiateOperation.SetIntegrationTimeMS ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ
ÈóƱ´ü½èÍý¤òÍøÍѤ·¤Æ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£


using UnityEngine;
using Cysharp.Threading.Tasks;
using System.Threading;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;

public class AsyncSpawner : MonoBehaviour {

    public AssetReference prefabReference;
    public int spawnCount = 5;
    public float spawnInterval = 1.0f; // ÉÃ
    public float timeMs = 2.0f;        // ¥ß¥êÉÃ

    private void Start() {
        SpawnObjectsAsync(destroyCancellationToken).Forget();
    }

    private async UniTaskVoid SpawnObjectsAsync(CancellationToken cancellationToken) {
        for (int i = 0; i < spawnCount; i++) {

            // ¥­¥ã¥ó¥»¥ë¥Á¥§¥Ã¥¯
            cancellationToken.ThrowIfCancellationRequested();

            // ÈóƱ´ü½èÍý¤Ë¤è¤ëÀ¸À®½èÍý¤Î¼Â¹Ô
            AsyncOperationHandle<GameObject> handle = prefabReference.InstantiateAsync();

            // SetIntegrationTimeMS ¤òÍøÍѤ·¤Æ Awake ¼Â¹Ô¥¿¥¤¥ß¥ó¥°¤òÀ©¸æ
            AsyncInstantiateOperation.SetIntegrationTimeMS(timeMs);

            // À¸À®´°Î»¤Þ¤ÇÂÔµ¡
            GameObject instance = await handle.Task;

            // ÇÛÃ֤Ƚé´ü²½
            instance.transform.position = new Vector3(i * 2, 0, 0);

            // »ØÄê´Ö³Ö¤ÇÂÔµ¡
            await UniTask.Delay(System.TimeSpan.FromSeconds(spawnInterval), cancellationToken: cancellationToken);
        }
    }
}


¤Þ¤È¤á


¡¡¤³¤Îµ­»ö¤Ç¤Ï¡¢UniTask ¤ÈÄ̾ï¤Î¥×¥ì¥Ï¥Ö¤òÍøÍѤ·¤¿Æ±´ü¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®½èÍý¤È¡¢ÈóƱ´ü¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®½èÍý¤Ë¤Ä¤¤¤Æ²òÀ⤷¤Þ¤·¤¿¡£

¡¡£±¡¥UniTask ¤òÍøÍѤ·¤¿ÈóƱ´ü½èÍý¤Ë¤è¤ê¡¢¥Õ¥ì¡¼¥à¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤ò°Ý»ý¡£
¡¡£²¡¥½ÀÆð¤Ê¥­¥ã¥ó¥»¥ë½èÍý¤ÎÁȤ߹þ¤ß¡£

¡¡¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®¤Ï¥³¥¹¥È¤Î¤«¤«¤ë½èÍý¤Ç¤¢¤ê¤Þ¤¹¤¬¡¢Æ±´üŪ¤ÊÀ¸À®½èÍý¤¬Å¬¤·¤Æ¤¤¤ë¤«¡¢¤¢¤ë¤¤¤ÏÈóƱ´ü½èÍý¤Ç¤âÌäÂ꤬¤Ê¤¤¤Î¤«¡¢
¤³¤ì¤é¤òŬÀڤʾìÌ̤ǻȤ¤Ê¬¤±¤ë¤³¤È¤Ç½ÀÆð¤Ê½èÍý¤ò¼ÂÁõ¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡ÆÃ¤Ë¥×¥í¥¸¥§¥¯¥È¤Ç¤ÎÈóƱ´ü½èÍý¤ÎºÇŬ²½¤ò¹Ô¤¦ºÝ¤Ë¤Ï¡¢¤³¤¦¤¤¤Ã¤¿Éôʬ¤òǰƬ¤Ë¤ª¤¤¤Æ¥Á¥ã¥ì¥ó¥¸¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£


»²¹Í¥µ¥¤¥È


¡¡»²¹Í¤Ë¤µ¤»¤Æ¤¤¤¿¤À¤­¤Þ¤·¤¿¡£¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿¡£


Zenn amp ÍÍ
¡ÚUnity¡ÛInstantiateAsync¤Î»È¤¤Êý¤È®ÅÙ¸¡¾Ú
https://zenn.dev/ambr_inc/articles/1636d59bdf8786
Hatena Blog MR¤¬³Ú¤·¤¤ ÍÍ
Unity¤ÇMonoBehaviour¤ÎÇË´þ¤ò¸¡ÃΤ¹¤ë¥­¥ã¥ó¥»¥ë¥È¡¼¥¯¥ó¤ò»²¾È¤¹¤ë
https://bluebirdofoz.hatenablog.com/entry/2024/10/...
LIGHT11 ÍÍ
¡ÚUnity¡ÛUnity6¤«¤éÄɲ䵤줿¡ÖInstantiateAsync¡×¤Ç¥ª¥Ö¥¸¥§¥¯¥È¤òÈóƱ´üÀ¸À®¤¹¤ë
https://light11.hatenadiary.com/entry/2024/12/18/1...

¥³¥á¥ó¥È¤ò¤«¤¯


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

Menu


´ðÁÃ

µ»½Ñ/Ãμ±(¼ÂÁõÎã)

3D¥¢¥¯¥·¥ç¥ó¥²¡¼¥à

2D¤ª¤Ï¤¸¤­¥²¡¼¥à(ȯŸÊÔ)

2D¶¯À©²£¥¹¥¯¥í¡¼¥ë¥¢¥¯¥·¥ç¥ó(ȯŸÊÔ)

2D¥¿¥Ã¥×¥·¥å¡¼¥Æ¥£¥ó¥°(³ÈÄ¥ÊÔ)

¥ì¡¼¥¹¥²¡¼¥à(È´¿è)

2DÊüÃÖ¥²¡¼¥à(ȯŸÊÔ)

3D¥ì¡¼¥ë¥¬¥ó¥·¥å¡¼¥Æ¥£¥ó¥°(±þÍÑÊÔ)

3Dæ½Ð¥²¡¼¥à(È´¿è)

2D¥ê¥¢¥ë¥¿¥¤¥à¥¹¥È¥é¥Æ¥¸¡¼

3D¥¿¥Ã¥×¥¢¥¯¥·¥ç¥ó(NavMeshAgent »ÈÍÑ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥«¥¨¥ë¤Î°Ù¤Ë¡Á¡¢¥Ü¥³¥¹¥«¥¦¥©¡¼¥ºÉ÷)

VideoPlayer ¥¤¥Ù¥ó¥ÈϢư¤Î¼ÂÁõÎã

VideoPlayer ¥ê¥¹¥ÈÆ⤫¤é¥à¡¼¥Ó¡¼ºÆÀ¸¤Î¼ÂÁõÎã(ȯŸ)

AR ²èÁüÉÕ¤­¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®¤Î¼ÂÁõÎã

AR ¥ê¥¹¥ÈÆ⤫¤éÀ¸À®¤Î¼ÂÁõÎã(ȯŸ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥µ¥Ð¥¤¥Ð¡¼É÷)

private



¤³¤Î¥µ¥¤¥ÈÆâ¤ÎºîÉʤϥæ¥Ë¥Æ¥£¤Á¤ã¤ó¥é¥¤¥»¥ó¥¹¾ò¹à¤Î¸µ¤ËÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£

´ÉÍý¿Í/Éû´ÉÍý¿Í¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹