HoloLens (1. nesil) Temel Bilgiler 101E: Öykünücü ile projeyi tamamlama

Önemli

Karma Gerçeklik Academy öğreticileri HoloLens (1. nesil), Unity 2017 ve Karma Gerçeklik Immersive Headsets düşünülerek tasarlanmıştır. Bu nedenle, bu cihazlar için geliştirme konusunda hala rehberlik arayan geliştiriciler için bu öğreticileri yerinde bırakmanın önemli olduğunu hissediyoruz. Bu öğreticiler, HoloLens 2 için kullanılan en son araç kümeleri veya etkileşimlerle güncelleştirilmez ve Unity'nin daha yeni sürümleriyle uyumlu olmayabilir. Desteklenen cihazlarda çalışmaya devam etmek için bakımları yapılacaktır. HoloLens 2 için yeni bir öğretici serisi yayınlanmıştır.


Bu öğreticide, HoloLens'te bakış, hareketler, ses girişi, uzamsal ses ve uzamsal haritalama gibi temel Windows Mixed Reality özelliklerini gösteren Unity'de oluşturulmuş eksiksiz bir projede size yol gösterilir. Öğreticinin tamamlanması yaklaşık 1 saat sürer.

Cihaz desteği

Kurs HoloLens Çevreleyici kulaklıklar
MR Basics 101E: Öykünücü ile projeyi tamamlama ✔️

Başlamadan önce

Önkoşullar

  • Doğru araçlar yüklü olarak yapılandırılmış bir Windows 10 bilgisayar.

Proje dosyaları

  • Projenin gerektirdiği dosyaları indirin. Unity 2017.2 veya sonraki bir sürümü gerektirir.
    • Unity 5.6 desteğine hala ihtiyacınız varsa lütfen bu sürümü kullanın.
    • Unity 5.5 desteğine hala ihtiyacınız varsa lütfen bu sürümü kullanın.
    • Unity 5.4 desteğine hala ihtiyacınız varsa lütfen bu sürümü kullanın.
  • Dosyaları masaüstünüzde veya ulaşılmaya kolay başka bir konumda arşivden çıkarın. Klasör adını Origami olarak tutun.

Not

İndirmeden önce kaynak kodu incelemek isterseniz GitHub'da kullanılabilir.

Bölüm 1 - "Holo" dünyası

Bu bölümde, ilk Unity projemizi ayarlayıp derleme ve dağıtma işleminde adım adım ilerleyeceğiz.

Hedefler

  • Unity'i holografik geliştirme için ayarlayın.
  • Hologram yap.
  • Yaptığınız hologramı görün.

Yönergeler

  • Unity'i başlatın.
  • ’ı seçin.
  • Konumu daha önce arşivlediğiniz Origami klasörü olarak girin.
  • Origami'yi seçin ve Klasör Seç'e tıklayın.
  • Yeni sahneyi kaydedin: Sahneyi Farklı / Kaydet.
  • Sahneyi Origami olarak adlandırın ve Kaydet düğmesine basın.

Ana kamerayı ayarlama

  • Hiyerarşi Paneli'ndeAna Kamera'yı seçin.
  • Denetçide dönüşüm konumunu 0,0,0 olarak ayarlayın.
  • Bayrakları Temizle özelliğini bulun ve skybox olan açılan listeyi Düz renk olarak değiştirin.
  • Renk seçiciyi açmak için Arka Plan alanına tıklayın.
  • R, G, B ve A'yı0 olarak ayarlayın.

Sahneyi ayarlama

  • Hiyerarşi Paneli'ndeOluştur ve Boş Oluştur'a tıklayın.
  • Yeni GameObject'e sağ tıklayın ve Yeniden Adlandır'ı seçin. GameObject'i OrigamiCollection olarak yeniden adlandırın.
  • Proje Paneli'ndekiHologramlar klasöründen:
    • OrigamiCollection'ın alt öğesi olmak için Stage'i Hiyerarşiye sürükleyin.
    • OrigamiCollection'ın alt öğesi olmak için Sphere1'i Hiyerarşiye sürükleyin.
    • OrigamiCollection'ın alt öğesi olmak için Sphere2'yi Hiyerarşiye sürükleyin.
  • Hiyerarşi Paneli'ndeYön Işığı nesnesine sağ tıklayın ve Sil'i seçin.
  • Hologramlar klasöründen Işıklar'ıHiyerarşi Paneli'nin köküne sürükleyin.
  • Hiyerarşide, OrigamiCollection'ı seçin.
  • Denetçide dönüştürme konumunu 0, -0,5, 2,0 olarak ayarlayın.
  • Hologramlarınızın önizlemesini görüntülemek için Unity'de Yürüt düğmesine basın.
  • Önizleme penceresinde Origami nesnelerini görmeniz gerekir.
  • Önizleme modunu durdurmak için Oynat'a ikinci kez basın.

Projeyi Unity'den Visual Studio'ya aktarma

  • Unity'de Dosya > Derleme Ayarları'nı seçin.
  • Platform listesinde Windows Mağazası'nı seçin ve Platform Değiştir'e tıklayın.
  • SDK'yıEvrensel 10 ve Derleme Türü'nüD3D olarak ayarlayın.
  • Unity C# Projelerini denetleyin.
  • Sahneyi eklemek için Açık Sahne Ekle'ye tıklayın.
  • Yürütücü Ayarları... öğesine tıklayın.
  • Denetçi Paneli'nde Windows Mağazası logosunu seçin. Ardından Yayımlama Ayarları'nı seçin.
  • Özellikler bölümünde Mikrofon ve SpatialPerception özelliklerini seçin.
  • Derleme Ayarları penceresine dönüp Oluştur'a tıklayın.
  • "Uygulama" adlı yeni bir Klasör oluşturun.
  • Uygulama Klasörü'ne tek tıklayın.
  • Klasör Seç'e basın.
  • Unity tamamlandığında bir Dosya Gezgini penceresi görüntülenir.
  • Uygulama klasörünü açın.
  • Origami Visual Studio Çözümünü açın.
  • Visual Studio'daki üst araç çubuğunu kullanarak hedefi Hata Ayıklama'dan Yayın'a ve ARM'den X86'ya değiştirin.
    • Cihaz düğmesinin yanındaki oka tıklayın ve HoloLens Öykünücüsü'ne tıklayın.
    • Hata Ayıkla -> Hata ayıklama olmadan başlat'a tıklayın veya Ctrl + F5 tuşlarına basın.
    • Bir süre sonra öykünücü, Origami projesiyle başlayacaktır. Öykünücüyü ilk kez başlatırken öykünücünün başlatılması 15 dakika kadar sürebilir. Başladıktan sonra kapatmayın.

Bölüm 2 - Bakış

Bu bölümde hologramlarınızla etkileşim kurmanın üç yolunun ilkini tanıtacağız: bakış.

Hedefler

  • Dünya kilitli bir imleç kullanarak bakışınızı görselleştirin.

Yönergeler

  • Unity projenize Geri dön ve hala açıksa Derleme Ayarları penceresini kapatın.
  • Proje panelindeHologramlar klasörünü seçin.
  • İmleç nesnesini kök düzeyde hiyerarşi paneline sürükleyin.
  • İmleç nesnesine çift tıklayarak daha yakından bakın.
  • Proje panelinde Betikler klasörüne sağ tıklayın.
  • Oluştur alt menüsüne tıklayın.
  • C# Betiği'ne tıklayın.
  • Betiği WorldCursor olarak adlandırın. Not: Ad büyük/küçük harfe duyarlıdır. .cs uzantısını eklemeniz gerekmez.
  • Hiyerarşi panelindeİmleç nesnesini seçin.
  • WorldCursor betiğini sürükleyip Denetçi paneline bırakın.
  • WorldCursor betiğine çift tıklayarak Visual Studio'da açın.
  • Bu kodu kopyalayıp WorldCursor.cs dosyasına yapıştırın ve Tümünü Kaydet'i seçin.
using UnityEngine;

public class WorldCursor : MonoBehaviour
{
    private MeshRenderer meshRenderer;

    // Use this for initialization
    void Start()
    {
        // Grab the mesh renderer that's on the same object as this script.
        meshRenderer = this.gameObject.GetComponentInChildren<MeshRenderer>();
    }

    // Update is called once per frame
    void Update()
    {
        // Do a raycast into the world based on the user's
        // head position and orientation.
        var headPosition = Camera.main.transform.position;
        var gazeDirection = Camera.main.transform.forward;

        RaycastHit hitInfo;

        if (Physics.Raycast(headPosition, gazeDirection, out hitInfo))
        {
            // If the raycast hit a hologram...
            // Display the cursor mesh.
            meshRenderer.enabled = true;

            // Move thecursor to the point where the raycast hit.
            this.transform.position = hitInfo.point;

            // Rotate the cursor to hug the surface of the hologram.
            this.transform.rotation = Quaternion.FromToRotation(Vector3.up, hitInfo.normal);
        }
        else
        {
            // If the raycast did not hit a hologram, hide the cursor mesh.
            meshRenderer.enabled = false;
        }
    }
}
  • Uygulamayı Dosya > Derleme Ayarları'ndan yeniden derleyin.
  • Öykünücüye dağıtmak için daha önce kullanılan Visual Studio çözümüne dönün.
  • İstendiğinde 'Tümünü Yeniden Yükle'yi seçin.
  • Hata Ayıkla -> Hata ayıklama olmadan başlat'a tıklayın veya Ctrl + F5 tuşlarına basın.
  • Sahnenin çevresine bakmak için Xbox oyun kumandasını kullanın. İmlecin nesnelerin şekliyle nasıl etkileşime geçtiğini fark edin.

Bölüm 3 - Hareketler

Bu bölümde hareketler için destek ekleyeceğiz. Kullanıcı bir kağıt küre seçtiğinde Unity'nin fizik motorunu kullanarak yerçekimini açarak kürenin düşmesini sağlayacağız.

Hedefler

  • Hologramlarınızı Seçme hareketiyle kontrol edin.

Yönergeler

Başlangıç olarak Seçme hareketini algılayabileceğinizden daha fazla bir betik oluşturacağız.

  • Scripts klasöründe GazeGestureManager adlı bir betik oluşturun.
  • GazeGestureManager betiğini Hiyerarşideki OrigamiCollection nesnesine sürükleyin.
  • Visual Studio'da GazeGestureManager betiğini açın ve aşağıdaki kodu ekleyin:
using UnityEngine;
using UnityEngine.XR.WSA.Input;

public class GazeGestureManager : MonoBehaviour
{
    public static GazeGestureManager Instance { get; private set; }

    // Represents the hologram that is currently being gazed at.
    public GameObject FocusedObject { get; private set; }

    GestureRecognizer recognizer;

    // Use this for initialization
    void Start()
    {
        Instance = this;

        // Set up a GestureRecognizer to detect Select gestures.
        recognizer = new GestureRecognizer();
        recognizer.Tapped += (args) =>
        {
            // Send an OnSelect message to the focused object and its ancestors.
            if (FocusedObject != null)
            {
                FocusedObject.SendMessageUpwards("OnSelect", SendMessageOptions.DontRequireReceiver);
            }
        };
        recognizer.StartCapturingGestures();
    }

    // Update is called once per frame
    void Update()
    {
        // Figure out which hologram is focused this frame.
        GameObject oldFocusObject = FocusedObject;

        // Do a raycast into the world based on the user's
        // head position and orientation.
        var headPosition = Camera.main.transform.position;
        var gazeDirection = Camera.main.transform.forward;

        RaycastHit hitInfo;
        if (Physics.Raycast(headPosition, gazeDirection, out hitInfo))
        {
            // If the raycast hit a hologram, use that as the focused object.
            FocusedObject = hitInfo.collider.gameObject;
        }
        else
        {
            // If the raycast did not hit a hologram, clear the focused object.
            FocusedObject = null;
        }

        // If the focused object changed this frame,
        // start detecting fresh gestures again.
        if (FocusedObject != oldFocusObject)
        {
            recognizer.CancelGestures();
            recognizer.StartCapturingGestures();
        }
    }
}
  • Betikler klasöründe bu kez SphereCommands adlı başka bir betik oluşturun.
  • Hiyerarşi görünümünde OrigamiCollection nesnesini genişletin.
  • SphereCommands betiğini Hiyerarşi panelindeki Sphere1 nesnesine sürükleyin.
  • SphereCommands betiğini Hiyerarşi panelindeki Sphere2 nesnesine sürükleyin.
  • Betiği düzenlemek üzere Visual Studio'da açın ve varsayılan kodu şununla değiştirin:
using UnityEngine;

public class SphereCommands : MonoBehaviour
{
    // Called by GazeGestureManager when the user performs a Select gesture
    void OnSelect()
    {
        // If the sphere has no Rigidbody component, add one to enable physics.
        if (!this.GetComponent<Rigidbody>())
        {
            var rigidbody = this.gameObject.AddComponent<Rigidbody>();
            rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous;
        }
    }
}
  • Uygulamayı dışarı aktarın, derleyin ve HoloLens öykünücüsne dağıtın.
  • Sahnenin etrafına bakın ve kürelerden birini ortala.
  • Xbox oyun kumandası üzerindeki A düğmesine basın veya Seçim hareketinin benzetimini yapmak için Ara Çubuğu'na basın.

Bölüm 4 - Ses

Bu bölümde iki sesli komut için destek ekleyeceğiz: bırakılan küreleri özgün konumlarına döndürmek için "Dünyayı sıfırla", kürenin düşmesini sağlamak için de "Küreyi bırak".

Hedefler

  • Arka planda her zaman dinleyen sesli komutlar ekleyin.
  • Sesli komuta tepki veren bir hologram oluşturun.

Yönergeler

  • Betikler klasöründe SpeechManager adlı bir betik oluşturun.
  • SpeechManager betiğini Hiyerarşideki OrigamiCollection nesnesine sürükleyin
  • Visual Studio'da SpeechManager betiğini açın.
  • Bu kodu kopyalayıp SpeechManager.cs dosyasına yapıştırın ve Tümünü Kaydet'i seçin:
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Windows.Speech;

public class SpeechManager : MonoBehaviour
{
    KeywordRecognizer keywordRecognizer = null;
    Dictionary<string, System.Action> keywords = new Dictionary<string, System.Action>();

    // Use this for initialization
    void Start()
    {
        keywords.Add("Reset world", () =>
        {
            // Call the OnReset method on every descendant object.
            this.BroadcastMessage("OnReset");
        });

        keywords.Add("Drop Sphere", () =>
        {
            var focusObject = GazeGestureManager.Instance.FocusedObject;
            if (focusObject != null)
            {
                // Call the OnDrop method on just the focused object.
                focusObject.SendMessage("OnDrop", SendMessageOptions.DontRequireReceiver);
            }
        });

        // Tell the KeywordRecognizer about our keywords.
        keywordRecognizer = new KeywordRecognizer(keywords.Keys.ToArray());

        // Register a callback for the KeywordRecognizer and start recognizing!
        keywordRecognizer.OnPhraseRecognized += KeywordRecognizer_OnPhraseRecognized;
        keywordRecognizer.Start();
    }

    private void KeywordRecognizer_OnPhraseRecognized(PhraseRecognizedEventArgs args)
    {
        System.Action keywordAction;
        if (keywords.TryGetValue(args.text, out keywordAction))
        {
            keywordAction.Invoke();
        }
    }
}
  • Visual Studio'da SphereCommands betiğini açın.
  • Betiği aşağıdaki gibi okuyacak şekilde güncelleştirin:
using UnityEngine;

public class SphereCommands : MonoBehaviour
{
    Vector3 originalPosition;

    // Use this for initialization
    void Start()
    {
        // Grab the original local position of the sphere when the app starts.
        originalPosition = this.transform.localPosition;
    }

    // Called by GazeGestureManager when the user performs a Select gesture
    void OnSelect()
    {
        // If the sphere has no Rigidbody component, add one to enable physics.
        if (!this.GetComponent<Rigidbody>())
        {
            var rigidbody = this.gameObject.AddComponent<Rigidbody>();
            rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous;
        }
    }

    // Called by SpeechManager when the user says the "Reset world" command
    void OnReset()
    {
        // If the sphere has a Rigidbody component, remove it to disable physics.
        var rigidbody = this.GetComponent<Rigidbody>();
        if (rigidbody != null)
        {
            rigidbody.isKinematic = true;
            Destroy(rigidbody);
        }

        // Put the sphere back into its original local position.
        this.transform.localPosition = originalPosition;
    }

    // Called by SpeechManager when the user says the "Drop sphere" command
    void OnDrop()
    {
        // Just do the same logic as a Select gesture.
        OnSelect();
    }
}
  • Uygulamayı dışarı aktarın, derleyin ve HoloLens öykünücüsne dağıtın.
  • Öykünücü bilgisayarınızın mikrofonunu destekler ve sesinize yanıt verir: görünümü imlecin kürelerden birinde olacak şekilde ayarlayın ve "Sphere'ı Bırak" deyin.
  • Onları ilk konumlarına geri getirmek için "Dünyayı Sıfırla" deyin.

Bölüm 5 - Uzamsal ses

Bu bölümde uygulamaya müzik ekleyecek ve ardından belirli eylemlerde ses efektlerini tetikleyeceğiz. Seslere 3B alanda belirli bir konum vermek için uzamsal ses kullanacağız.

Hedefler

  • Dünyanızdaki hologramları duyun.

Yönergeler

  • Unity'de üst menüden Proje Ayarlarını > Düzenle Ses'i > seçin
  • Spatializer Eklentisi ayarını bulun ve MS HRTF Spatializer'ı seçin.
  • Hologramlar klasöründen Ambience nesnesini Hiyerarşi Panelindeki OrigamiCollection nesnesine sürükleyin.
  • OrigamiCollection'ı seçin ve Ses Kaynağı bileşenini bulun. Şu özellikleri değiştirin:
    • Spatialize özelliğini denetleyin.
    • UyanıkKen Oyna'ya bakın.
    • Kaydırıcıyı sağa doğru sürükleyerek Spatial Blend'i3B olarak değiştirin.
    • Loop özelliğini denetleyin.
    • 3B Ses Ayarları'nı genişletin ve Doppler Düzeyi için 0,1 girin.
    • Volume Rolloff değerini Logaritmik Rolloff olarak ayarlayın.
    • Maksimum Uzaklık değerini 20 olarak ayarlayın.
  • Betikler klasöründe SphereSounds adlı bir betik oluşturun.
  • SphereSounds'ı Hiyerarşideki Sphere1 ve Sphere2 nesnelerine sürükleyin.
  • Visual Studio'da SphereSounds'u açın, aşağıdaki kodu güncelleştirin ve Tümünü Kaydet'i seçin.
using UnityEngine;

public class SphereSounds : MonoBehaviour
{
    AudioSource impactAudioSource = null;
    AudioSource rollingAudioSource = null;

    bool rolling = false;

    void Start()
    {
        // Add an AudioSource component and set up some defaults
        impactAudioSource = gameObject.AddComponent<AudioSource>();
        impactAudioSource.playOnAwake = false;
        impactAudioSource.spatialize = true;
        impactAudioSource.spatialBlend = 1.0f;
        impactAudioSource.dopplerLevel = 0.0f;
        impactAudioSource.rolloffMode = AudioRolloffMode.Logarithmic;
        impactAudioSource.maxDistance = 20f;

        rollingAudioSource = gameObject.AddComponent<AudioSource>();
        rollingAudioSource.playOnAwake = false;
        rollingAudioSource.spatialize = true;
        rollingAudioSource.spatialBlend = 1.0f;
        rollingAudioSource.dopplerLevel = 0.0f;
        rollingAudioSource.rolloffMode = AudioRolloffMode.Logarithmic;
        rollingAudioSource.maxDistance = 20f;
        rollingAudioSource.loop = true;

        // Load the Sphere sounds from the Resources folder
        impactAudioSource.clip = Resources.Load<AudioClip>("Impact");
        rollingAudioSource.clip = Resources.Load<AudioClip>("Rolling");
    }

    // Occurs when this object starts colliding with another object
    void OnCollisionEnter(Collision collision)
    {
        // Play an impact sound if the sphere impacts strongly enough.
        if (collision.relativeVelocity.magnitude >= 0.1f)
        {
            impactAudioSource.Play();
        }
    }

    // Occurs each frame that this object continues to collide with another object
    void OnCollisionStay(Collision collision)
    {
        Rigidbody rigid = gameObject.GetComponent<Rigidbody>();

        // Play a rolling sound if the sphere is rolling fast enough.
        if (!rolling && rigid.velocity.magnitude >= 0.01f)
        {
            rolling = true;
            rollingAudioSource.Play();
        }
        // Stop the rolling sound if rolling slows down.
        else if (rolling && rigid.velocity.magnitude < 0.01f)
        {
            rolling = false;
            rollingAudioSource.Stop();
        }
    }

    // Occurs when this object stops colliding with another object
    void OnCollisionExit(Collision collision)
    {
        // Stop the rolling sound if the object falls off and stops colliding.
        if (rolling)
        {
            rolling = false;
            impactAudioSource.Stop();
            rollingAudioSource.Stop();
        }
    }
}
  • Betiği kaydedin ve Unity'ye dönün.
  • Uygulamayı dışarı aktarın, derleyin ve HoloLens öykünücüsne dağıtın.
  • Tam etkiyi elde etmek için kulaklık takın ve seslerin değiştiğini duymak için Sahne Alanı'ndan daha yakına ve daha ileriye hareket edin.

6. Bölüm - Uzamsal eşleme

Şimdi oyun tahtasını gerçek dünyadaki gerçek bir nesneye yerleştirmek için uzamsal haritalama kullanacağız.

Hedefler

  • Gerçek dünyanızı sanal dünyaya getirin.
  • Hologramlarınızı sizin için en önemli oldukları yere yerleştirin.

Yönergeler

  • Proje panelinde Hologramlar klasörüne tıklayın.
  • Uzamsal Eşleme varlığını Hiyerarşinin köküne sürükleyin.
  • Hiyerarşide Uzamsal Eşleme nesnesine tıklayın.
  • Denetçi panelinde aşağıdaki özellikleri değiştirin:
    • Görsel Çizgiler Çiz kutusunu işaretleyin.
    • Malzeme Çiz'i bulun ve sağ taraftaki daireye tıklayın. Üstteki arama alanına "tel çerçeve" yazın. Sonuda tıklayın ve pencereyi kapatın.
  • Uygulamayı dışarı aktarın, derleyin ve HoloLens öykünücüsne dağıtın.
  • Uygulama çalıştırıldığında, önceden taranmış bir gerçek dünya oturma odasının ağı tel çerçevede işlenir.
  • Yuvarlanan kürenin sahneden ve zemine nasıl düşeceğini izleyin!

Şimdi size OrigamiCollection'ı yeni bir konuma nasıl taşıyabileceğinizi göstereceğiz:

  • Betikler klasöründe TapToPlaceParent adlı bir betik oluşturun.
  • Hiyerarşide, OrigamiCollection'ı genişletin ve Stage nesnesini seçin.
  • TapToPlaceParent betiğini Stage nesnesine sürükleyin.
  • Visual Studio'da TapToPlaceParent betiğini açın ve aşağıdaki şekilde güncelleştirin:
using UnityEngine;

public class TapToPlaceParent : MonoBehaviour
{
    bool placing = false;

    // Called by GazeGestureManager when the user performs a Select gesture
    void OnSelect()
    {
        // On each Select gesture, toggle whether the user is in placing mode.
        placing = !placing;

        // If the user is in placing mode, display the spatial mapping mesh.
        if (placing)
        {
            SpatialMapping.Instance.DrawVisualMeshes = true;
        }
        // If the user is not in placing mode, hide the spatial mapping mesh.
        else
        {
            SpatialMapping.Instance.DrawVisualMeshes = false;
        }
    }

    // Update is called once per frame
    void Update()
    {
        // If the user is in placing mode,
        // update the placement to match the user's gaze.

        if (placing)
        {
            // Do a raycast into the world that will only hit the Spatial Mapping mesh.
            var headPosition = Camera.main.transform.position;
            var gazeDirection = Camera.main.transform.forward;

            RaycastHit hitInfo;
            if (Physics.Raycast(headPosition, gazeDirection, out hitInfo,
                30.0f, SpatialMapping.PhysicsRaycastMask))
            {
                // Move this object's parent object to
                // where the raycast hit the Spatial Mapping mesh.
                this.transform.parent.position = hitInfo.point;

                // Rotate this object's parent object to face the user.
                Quaternion toQuat = Camera.main.transform.localRotation;
                toQuat.x = 0;
                toQuat.z = 0;
                this.transform.parent.rotation = toQuat;
            }
        }
    }
}
  • Uygulamayı dışarı aktarın, derleyin ve dağıtın.
  • Artık oyunu belirli bir konuma bakarak, Seçme hareketini (A veya Ara Çubuğu) kullanarak ve ardından yeni bir konuma taşıyarak ve Yeniden Seç hareketini kullanarak yerleştirebiliyor olmanız gerekir.

Son

Ve bu öğreticinin sonu geldi!

Öğrendikleriniz:

  • Unity'de holografik uygulama oluşturma.
  • Bakış, hareket, ses, ses ve uzamsal haritalamadan yararlanma.
  • Visual Studio kullanarak uygulama oluşturma ve dağıtma.

Artık kendi holografik uygulamalarınızı oluşturmaya başlamaya hazırsınız!

Ayrıca bkz.