HoloLens (1. nesil) ve Azure 308: Çapraz cihaz bildirimleri


Not

Karma Gerçeklik Akademi öğreticileri, HoloLens (1. nesil) ve Karma Gerçeklik Çevreleyici Mikrofonlu Bu nedenle, bu cihazlar için geliştirme konusunda rehberlik arayan geliştiriciler için bu öğreticileri yerinde bırakmanın önemli olduğunu hissetmeyiz. Bu öğreticiler, 2. sürüm için kullanılan en son araç kümeleri veya etkileşimler HoloLens güncelleştirilmez. Desteklenen cihazlar üzerinde çalışmaya devam etmek için bunlar korunur. Gelecekte 2. bir uygulama için geliştirmeyi gösteren yeni bir öğretici serisi HoloLens. Bu bildirim, gönderildikleri zaman bu öğreticilerin bir bağlantısıyla güncelleştirilir.


son ürün -start

Bu kursta Azure Notification Hubs, Azure Tables ve Notification Hubs kullanarak karma gerçeklik uygulamasına Azure İşlevleri.

Azure Notification Hubs, geliştiricilerin bulutta desteklenen tüm platformlara hedeflenen ve kişiselleştirilmiş anında bildirim göndermelerine olanak sağlayan bir Microsoft hizmetidir. Bu, geliştiricilerin senaryoya bağlı olarak son kullanıcılarla ve hatta çeşitli uygulamalar arasında iletişim kurmasına etkili bir şekilde olanak sağlar. Daha fazla bilgi için AzureNotification Hubsziyaret edin.

Azure İşlevleri, geliştiricilerin Azure'da küçük kod parçaları ('işlevler) çalıştırmalarını sağlayan bir Microsoft hizmetidir. Bu, yerel uygulama yerine işi buluta temsilci olarak seçen ve birçok avantaja sahip olan bir yol sağlar. Azure İşlevleri C#, F#, Node.js, Java ve PHP gibi çeşitli geliştirme dillerini destekler. Daha fazla bilgi için Azure İşlevleriziyaret edin.

Azure Tabloları, geliştiricilerin bulutta yapılandırılmış olmayan SQL depolamalarına olanak sağlayan bir Microsoft bulut hizmetidir ve her yerde kolayca erişilebilir olmasını sağlar. Hizmet şemasız bir tasarıma sahiptir ve gerektiğinde tabloların evrimini sağlar ve bu nedenle çok esnektir. Daha fazla bilgi için Azure Tabloları sayfasını ziyaretedin

Bu kursu tamamlayan bir karma gerçeklik çevreleyici başlığı uygulamasına ve aşağıdaki işlemleri gerçekleştirecek bir Desktop PC uygulamasına sahip oluruz:

  1. Masaüstü bilgisayar uygulaması, kullanıcının fareyi kullanarak bir nesneyi 2D alanda (X ve Y) taşımasına olanak sağlar.

  2. Pc uygulaması içindeki nesnelerin hareketi JSON kullanılarak buluta gönderilir. Bu, nesne kimliği, türü ve dönüştürme bilgilerini (X ve Y koordinatları) içeren bir dize şeklinde olur.

  3. Masaüstü uygulamasıyla aynı sahneyi alan karma gerçeklik uygulaması, Notification Hubs hizmetten (Desktop PC uygulaması tarafından yeni güncelleştirilmiş olan) nesne taşımayla ilgili bildirimler alır.

  4. Nesne kimliğini, türünü ve dönüştürme bilgilerini içeren bir bildirim aldıktan sonra karma gerçeklik uygulaması alınan bilgileri kendi sahnelerine uygulayacak.

Uygulamanıza sonuçları tasarımınız ile nasıl tümleştirebilirsiniz? Bu kurs, azure hizmetini Unity hizmetiniz ile nasıl tümleştireceklerini Project. Karma gerçeklik uygulamanızı geliştirmek için bu kurstan elde edinilen bilgileri kullanmak sizin görevinizdir. Bu kurs, doğrudan başka karma gerçeklik laboratuvarlarını içermeyen kendi içinde bir öğreticidir.

Cihaz desteği

Kurs HoloLens Çevreleyici başlığı
MR ve Azure 308: Çapraz cihaz bildirimleri ✔️ ✔️

Not

Bu kurs öncelikle çevreleyici (VR) Windows Mixed Reality başlığına odaklansa da, bu kursta edinilenleri Microsoft HoloLens. Kursu takip ettiyken, bu adımları desteklemek için ihtiyacınız olan tüm değişikliklerle ilgili HoloLens. Bu HoloLens, ses yakalama sırasında bazı yankılar fark olabilir.

Önkoşullar

Not

Bu öğretici Unity ve C# ile ilgili temel deneyime sahip geliştiriciler için tasarlanmıştır. Ayrıca, bu belge içindeki önkoşulların ve yazılan yönergelerin, yazıldığı sırada test edilen ve doğrulananları (Mayıs 2018) temsil etmelerini de unutmayın. Araçları yükleme makalesinde listelenen en son yazılımları kullanabilirsiniz, ancak bu kursta yer alan bilgilerin aşağıda listelenenlerden daha yeni yazılımlarda bulunanlarla mükemmel bir şekilde eş olacağını varsaymanız gerekir.

Bu kurs için aşağıdaki donanım ve yazılımları öneririz:

Başlamadan önce

  • Bu projeyi oluşturma sorunlarıyla karşılaşmamak için, bu öğreticide bahsedilen projeyi kök veya köke yakın bir klasörde oluşturmanız önemle önerilir (uzun klasör yolları derleme zamanında soruna neden olabilir).
  • Microsoft Geliştirici Portalı ve Uygulama Kayıt Portalı'nıza sahip olmak gerekir, aksi takdirde 2.Bölüm'de uygulamaya erişim izniniz olmaz.

Bölüm 1 - Microsoft Geliştirici Portal'da uygulama oluşturma

Azure Notification Hubs Hizmetini kullanmak için, Microsoft Geliştirici Portal'da bir Uygulama oluşturmanız gerekir çünkü uygulamanın bildirim gönder ve al için kayıtlı olması gerekir.

  1. Microsoft Geliştirici Portal'da oturum açın.

    Microsoft Hesabınızla oturum açabilirsiniz.

  2. Pano'dan Yeni uygulama oluştur'a tıklayın.

    uygulama oluşturma

  3. Yeni uygulamanıza bir ad adanmanız gereken bir açılır pencere görüntülenir. Metin kutusuna uygun bir ad girin; Seçilen ad varsa, metin kutusunun sağ tarafından bir onay işareti görünür. Kullanılabilir bir ad ekledikten sonra açılan ekranın sol alt kısmında bulunan Ürün adını yedekle düğmesine tıklayın.

    bir adı ters çevirme

  4. Uygulama oluşturulduktan sonra bir sonraki Bölüme geçebilirsiniz.

Bölüm 2 - Yeni uygulama kimlik bilgilerinizi alma

Yeni uygulamanın listelenmiş olduğu Uygulama Kayıt Portalında oturum açın ve Azure Portal'da Notification Hubs Hizmeti'nin kurulumunu yapmak için kullanılacak kimlik bilgilerini alın.

  1. Uygulama Kayıt Portalı'ne gidin.

    uygulama kayıt portalı

    Uyarı

    Oturum açma için Microsoft Hesabınız gerekir.
    Bu, Windows Store Developer portalını kullanarak önceki Bölümde Windows hesabıdır.

  2. Uygulamalarınızı Uygulamalarım bölümünde bulabilirsiniz. Bulan uygulamaya tıklarsanız uygulama adı ve Kaydı olan yeni bir sayfaya götürülebilirsiniz.

    yeni kaydedilen uygulama

  3. Uygulama Gizli Dizileri bölümünü ve uygulamanıza uygun Paket SID'lerini bulmak için kayıt sayfasını aşağı kaydırın. Sonraki bölümde Azure Notification Hubs Service'i ayarlarken kullanmak üzere her ikisini de kopyalayın.

    uygulama gizli dizileri

3. Bölüm - Azure Portalı'nı ayarlama: Notification Hubs Hizmeti oluşturma

Uygulama kimlik bilgileriniz alınarak Azure Portal'a gidip azure Notification Hubs Service oluşturabilirsiniz.

  1. Azure Portal'da oturum açın.

    Not

    Henüz bir Azure hesabınız yoksa bir tane oluşturmanız gerekir. Bu öğreticiyi bir sınıf veya laboratuvar ortamında takip ediyorsanız, eğitmenden veya eğitmenden birinin yeni hesabı ayarlarken yardım istemesini sorun.

  2. Oturum açtıktan sonra sol üst köşedeki Yeni'ye tıklayın ve Notification Hubaraması yaptıktan sonra Enter t'a tıklayın.

    bildirim hub'ı arama

    Not

    Yeni sözcüğü, daha yeni portallarda Kaynak oluşturile değiştirilmiş olabilir.

  3. Yeni sayfa, yeni hizmet için Notification Hubs sağlar. Bu istemin sol alt kısmında Oluştur düğmesini seçerek bu hizmetle bir ilişki oluşturun.

    notification hubs örneği oluşturma

  4. Oluştur'a tıkladıktan sonra:

    1. Bu hizmet örneği için istediğiniz adı girin.

    2. Bu uygulamayla ilişkilendirilecek bir ad alanı sağlar.

    3. Bir Konum seçin.

    4. Bir kaynak grubu seçin veya yeni bir tane oluşturun. Bir kaynak grubu, Azure varlıklarının bir koleksiyonu için faturalandırma, erişimi denetleme, sağlama ve yönetme için bir yol sağlar. Ortak bir kaynak grubu altında tek bir projeyle (örneğin, bu laboratuvarlar) ilişkili tüm Azure hizmetlerini tutmanız önerilir.

      Azure Kaynak grupları hakkında daha fazla bilgi edinmek istiyorsanız, lütfen bir kaynak grubunu yönetmehakkında bu bağlantıyı izleyin.

    5. Uygun bir abonelikseçin.

    6. Ayrıca, bu hizmete uygulanan hüküm ve koşulları anladığınızı da onaylamanız gerekir.

    7. Oluştur’u seçin.

      hizmet ayrıntılarını doldur

  5. Oluştur'a tıkladıktan sonra hizmetin oluşturulmasını beklemeniz gerekir, bu işlem birkaç dakika sürebilir.

  6. Hizmet örneği oluşturulduktan sonra portalda bir bildirim görüntülenir.

    uyarıyı

  7. Yeni hizmet örneğinizi araştırmak için bildirimdeki Kaynağa Git düğmesine tıklayın. Yeni Bildirim Hub 'ı hizmet örneğiniz için yönlendirilirsiniz.

    Kaynağa git

  8. Genel Bakış sayfasında, sayfanın üst yarısında Windows (WNS) öğesine tıklayın. Sağdaki panel, daha önce ayarladığınız uygulamadan paket SID 'si ve güvenlik anahtarınızıgerektiren iki metin alanını göstermek üzere değişecektir.

    Yeni oluşturulan hub 'lar hizmeti

  9. Ayrıntıları doğru alanlara kopyaladıktan sonra, Kaydet' e tıklayın ve Bildirim Hub 'ı başarıyla güncelleştirildiği zaman bir bildirim alırsınız.

    Güvenlik ayrıntılarını Kopyala

Bölüm 4-Azure portalını ayarlama: tablo hizmeti oluşturma

Notification Hubs hizmeti örneğinizi oluşturduktan sonra, azure Portal ' a geri giderek bir Depolama kaynağı oluşturarak azure tabloları hizmeti oluşturacaksınız.

  1. Henüz oturum açmadıysanız Azure portalındaoturum açın.

  2. oturum açtıktan sonra sol üst köşedeki yeni ' ye tıklayın ve Depolama hesap' ı arayın ve Enter' a tıklayın.

    Not

    Yeni portallarda Yenibir kaynak oluşturile değiştirilmiş olabilir.

  3. listeden Depolama hesap-blob, dosya, tablo, kuyruk ' u seçin.

    depolama hesabı ara

  4. yeni sayfa Depolama hesap hizmetinin bir açıklamasını sağlar. Bu hizmetin bir örneğini oluşturmak için bu istemin sol alt kısmındaki Oluştur düğmesini seçin.

    depolama örneği oluştur

  5. Oluştur'a tıkladıktan sonra bir panel görünür:

    1. Bu hizmet örneği için istediğiniz adı girin (tümü küçük harf olmalıdır).

    2. Dağıtım modeliiçin Resource Manager' a tıklayın.

    3. hesap türüiçin, açılan menüyü kullanarak Depolama (genel amaçlı v1)öğesini seçin.

    4. Uygun bir konumseçin.

    5. Çoğaltma açılan menüsü için Okuma Erişimli-Coğrafi olarak YEDEKLI depolama (RA-GRS)seçeneğini belirleyin.

    6. Performansiçin Standart' a tıklayın.

    7. Güvenli aktarım gerekli bölümü Içinde devre dışı' yı seçin.

    8. Abonelik açılan menüsünde uygun bir abonelik seçin.

    9. Bir kaynak grubu seçin veya yeni bir tane oluşturun. Bir kaynak grubu, Azure varlıklarının bir koleksiyonu için faturalandırma, erişimi denetleme, sağlama ve yönetme için bir yol sağlar. Ortak bir kaynak grubu altında tek bir projeyle (örneğin, bu laboratuvarlar) ilişkili tüm Azure hizmetlerini tutmanız önerilir.

      Azure Kaynak grupları hakkında daha fazla bilgi edinmek istiyorsanız, lütfen bir kaynak grubunu yönetmehakkında bu bağlantıyı izleyin.

    10. Sizin için bir seçenek ise sanal ağlarıdevre dışı olarak bırakın.

    11. Oluştur’a tıklayın.

      depolama ayrıntılarını doldur

  6. Oluştur'a tıkladıktan sonra hizmetin oluşturulmasını beklemeniz gerekir, bu işlem birkaç dakika sürebilir.

  7. Hizmet örneği oluşturulduktan sonra portalda bir bildirim görüntülenir. Yeni hizmet örneğinizi araştırmak için bildirimlere tıklayın.

    Yeni depolama bildirimi

  8. Yeni hizmet örneğinizi araştırmak için bildirimdeki Kaynağa Git düğmesine tıklayın. yeni Depolama hizmet örneğine genel bakış sayfasına yönlendirilirsiniz.

    Kaynağa git

  9. Genel Bakış sayfasından sağ tarafa Tablolar' a tıklayın.

  10. Sağdaki panel, Tablo hizmeti bilgilerini göstermek üzere değişecektir ve burada yeni bir tablo eklemeniz gerekir. Bunu, + sol üst köşedeki + düğmesine tıklayarak yapın.

    Tabloları aç

  11. Yeni bir sayfa görüntülenir, burada bir tablo adıgirmeniz gerekir. Bu, sonraki bölümlerde uygulamanızdaki verilere başvurmak için kullanacağınız addır. Uygun bir ad girin ve Tamam' a tıklayın.

    Yeni tablo oluştur

  12. Yeni Tablo oluşturulduktan sonra, onu Tablo hizmeti sayfasında (alt kısımdaki) görebilirsiniz.

    Yeni tablo oluşturuldu

Bölüm 5-Visual Studio Azure tablosu Tamamlanıyor

Artık Tablo hizmeti depolama hesabınız kurulu olduğuna göre, verileri depolamak ve almak için kullanılacak, bu verilere veri eklemek zaman alır. Tablolarınızın düzenlenmesinin Visual Studioaracılığıyla yapılması yapılabilir.

  1. Visual Studioaçın.

  2. Menüden, bulut Gezgininigörüntüle ' ye tıklayın.

    bulut Gezginini aç

  3. Bulut Gezgini , yerleşik bir öğe olarak açılır (yükleme zaman alabilir, hasta olur).

    Not

    Depolama hesaplarınızı oluşturmak için kullandığınız abonelik görünür değilse, şunları yapın:

    • Azure portalında kullandığınız hesapta oturum açıldı.

    • Hesap yönetimi sayfasından aboneliğiniz seçildi (hesap ayarlarınızda bir filtre uygulamanız gerekebilir):

      abonelik bul

  4. Azure Cloud Services 'niz gösterilir. Depolama hesapları bulun ve sol tarafındaki, hesaplarınızı genişletmek için oka tıklayın.

    açık depolama hesapları

  5. genişlettikten sonra, yeni oluşturulan Depolama hesabınız kullanılabilir olmalıdır. Depolama alanınızı sol tarafındaki oka tıklayın ve sonra genişletilmiş bir kez, son bölümde oluşturduğunuz tabloyu göstermek için Tablolar bulun ve yanındaki oka tıklayın. Tablonuzaçift tıklayın.

    sahne nesneleri tablosunu aç

  6. tablonuz Visual Studio pencerenizin merkezinde açılacak. +Üzerinde (artı) tablo simgesine tıklayın.

    Yeni Tablo Ekle

  7. Varlık eklemeniziisteyip istemediğinizi soran bir pencere görüntülenir. Toplam olarak, her biri birkaç özelliği olan üç varlık oluşturacaksınız. Partitionkey ve rowkey 'in, verileri bulmak için tablo tarafından kullanıldığı şekilde zaten sağlandığını fark edersiniz.

    Bölüm ve satır anahtarı

  8. Partitionkey ve rowkey değerlerini aşağıdaki gibi güncelleştirin (her seferinde rowkey değerini artırır, ancak eklediğiniz her satır özelliği için bunu unutmayın):

    doğru değerleri ekleyin

  9. Fazla veri satırı eklemek için Özellik Ekle ' ye tıklayın. İlk boş tablonuzu aşağıdaki tabloyla eşleştirin.

  10. İşiniz bittiğinde Tamam ' a tıklayın.

    İşiniz bittiğinde Tamam 'a tıklayın

    Uyarı

    X, Yve Z, girişlerin türünüDoubleolarak değiştirdiğinizden emin olun.

  11. Artık tablonuzun bir veri satırı olduğunu fark edeceksiniz. +Başka bir varlık eklemek için (artı) simgesine tekrar tıklayın.

    ilk satır

  12. Ek bir özellik oluşturun ve ardından yeni varlığın değerlerini aşağıda gösterilenler ile eşleşecek şekilde ayarlayın.

    küp Ekle

  13. Başka bir varlık eklemek için son adımı tekrarlayın. Bu varlığın değerlerini aşağıda gösterilenler olarak ayarlayın.

    silindir Ekle

  14. Tablonuz artık aşağıdaki gibi görünmelidir.

    tablo tamam

  15. Bu bölümü tamamladınız. Kaydettiğinizden emin olun.

Bölüm 6-Azure İşlev Uygulaması oluşturma

Tablo hizmetini güncelleştirmek ve Bildirim Hub 'ıaracılığıyla bildirim göndermek için masaüstü uygulaması tarafından çağrılacak bir Azure işlev uygulaması oluşturun.

İlk olarak, Azure Işlevinizin ihtiyacınız olan kitaplıkları yüklemesine olanak sağlayacak bir dosya oluşturmanız gerekir.

  1. Not Defteri açın (Windows tuşuna basın ve not defteri yazın).

    Not defteri 'ni açın

  2. Not Defteri açık olduğunda, ona aşağıdaki JSON yapısını ekleyin. Bunu yaptıktan sonra, bu dosyayı masaüstünüze Project. JSONolarak kaydedin. Adlandırmanın doğru olması önemlidir: .txt dosya uzantısının bulunmadığından emin olun. Bu dosya, işlevinizin kullanacağı kitaplıkları tanımlar, NuGet kullandıysanız tanıdık gelecektir.

    {
    "frameworks": {
        "net46":{
        "dependencies": {
            "WindowsAzure.Storage": "7.0.0",
            "Microsoft.Azure.NotificationHubs" : "1.0.9",
            "Microsoft.Azure.WebJobs.Extensions.NotificationHubs" :"1.1.0"
        }
        }
    }
    }
    
  3. Azure portalındaoturum açın.

  4. Oturum açtıktan sonra sol üst köşedeki Yeni ' ye tıklayın ve işlev uygulamasıarayın, ENTERtuşuna basın.

    işlev uygulaması araması

    Not

    Yeni portallarda Yenibir kaynak oluşturile değiştirilmiş olabilir.

  5. Yeni sayfa işlev uygulaması hizmeti için bir açıklama sağlayacaktır. Bu hizmet ile bir ilişki oluşturmak için bu istem sol alt kısmındaki Oluştur düğmesini seçin.

    işlev uygulaması örneği

  6. Oluştur'a tıkladıktan sonra, aşağıdakileri girin:

    1. Uygulama adıiçin, bu hizmet örneği için istediğiniz adı girin.

    2. Bir abonelikseçin.

    3. Sizin için uygun olan fiyatlandırma katmanını seçin. işlev uygulaması bir hizmetilk kez oluşturuyorsanız, ücretsiz bir katmanın kullanılması gerekir.

    4. Bir kaynak grubu seçin veya yeni bir tane oluşturun. Bir kaynak grubu, Azure varlıklarının bir koleksiyonu için faturalandırma, erişimi denetleme, sağlama ve yönetme için bir yol sağlar. Ortak bir kaynak grubu altında tek bir projeyle (örneğin, bu laboratuvarlar) ilişkili tüm Azure hizmetlerini tutmanız önerilir.

      Azure Kaynak grupları hakkında daha fazla bilgi edinmek istiyorsanız, lütfen bir kaynak grubunu yönetmehakkında bu bağlantıyı izleyin.

    5. işletim sistemiiçin, istenen platform olduğundan Windows ' a tıklayın.

    6. Bir barındırma planı seçin (Bu öğretici bir Tüketim planıkullanmaktır.

    7. Bir konumseçin(önceki adımda derleyecek depolama alanı ile aynı konumu seçin)

    8. Depolama bölümünde, önceki adımda oluşturduğunuz Depolama hizmeti seçmeniz gerekir.

    9. bu uygulamada Application Insights ihtiyacınız olmayacaktır, bu nedenle devre dışıbırakabilirsiniz.

    10. Oluştur’a tıklayın.

      Yeni örnek oluştur

  7. Oluştur 'a tıkladıktan sonra hizmetin oluşturulmasını beklemeniz gerekir, bu işlem birkaç dakika sürebilir.

  8. Hizmet örneği oluşturulduktan sonra portalda bir bildirim görüntülenir.

    Yeni bildirim

  9. Yeni hizmet örneğinizi araştırmak için bildirimlere tıklayın.

  10. Yeni hizmet örneğinizi araştırmak için bildirimdeki Kaynağa Git düğmesine tıklayın.

    Kaynağa git

  11. +Yeni oluşturmakiçin +' in yanındaki (artı) simgesine tıklayın.

    Yeni işlev Ekle

  12. Merkezi panel içinde işlev oluşturma penceresi görüntülenir. Panelin üst yarısında bulunan bilgileri yoksayın ve alt kısımdaki (mavi alanda, aşağıdaki gibi) bulunan özel işlev ' etıklayın.

    Özel işlev

  13. Pencere içindeki yeni sayfa çeşitli işlev türlerini gösterir. Mor türleri görüntülemek için aşağı kaydırın ve http put öğesi ' ne tıklayın.

    http put bağlantısı

    Önemli

    Sayfada daha fazla kaymanız gerekebilir (ve Azure Portal güncelleştirmeleri gerçekleştiğinden bu görüntü tam olarak aynı görünmeyebilir), ancak http putadlı bir öğe arıyorsunuz.

  14. İşlevini yapılandırmanız gereken http put penceresi görünür (görüntü için aşağıya bakın).

    1. Dil için, açılan menüyü kullanarak C# ' ı seçin.

    2. Ad için uygun bir ad girin.

    3. Kimlik doğrulama düzeyi açılan menüsünde işlev' i seçin.

    4. Tablo adı bölümünde, önceden tablo hizmetinizi oluşturmak için kullandığınız tam adı kullanmanız gerekir (aynı harf büyük/küçük harf durumu da dahil).

    5. Depolama hesap bağlantısı bölümünde, açılan menüyü kullanın ve depolama hesabınızı buradan seçin. Orada yoksa, depolama hesabınızın listelenmesi gereken başka bir panel göstermek için bölüm başlığının yanındaki Yeni köprüye tıklayın.

      Yeni depolama alanı

  15. Oluştur ' a tıklayın, ayarlarınızın başarıyla güncelleştirildiğini belirten bir bildirim alırsınız.

    işlev oluştur

  16. Oluştur'a tıkladıktan sonra işlev düzenleyicisine yönlendirilirsiniz.

    işlev kodunu Güncelleştir

  17. İşlev düzenleyicisine aşağıdaki kodu ekleyin (işlevdeki kodu değiştirin):

    #r "Microsoft.WindowsAzure.Storage"
    
    using System;
    using Microsoft.WindowsAzure.Storage;
    using Microsoft.WindowsAzure.Storage.Table;
    using Microsoft.Azure.NotificationHubs;
    using Newtonsoft.Json;
    
    public static async Task Run(UnityGameObject gameObj, CloudTable table, IAsyncCollector<Notification> notification, TraceWriter log)
    {
        //RowKey of the table object to be changed
        string rowKey = gameObj.RowKey;
    
        //Retrieve the table object by its RowKey
        TableOperation operation = TableOperation.Retrieve<UnityGameObject>("UnityPartitionKey", rowKey); 
    
        TableResult result = table.Execute(operation);
    
        //Create a UnityGameObject so to set its parameters
        UnityGameObject existingGameObj = (UnityGameObject)result.Result; 
    
        existingGameObj.RowKey = rowKey;
        existingGameObj.X = gameObj.X;
        existingGameObj.Y = gameObj.Y;
        existingGameObj.Z = gameObj.Z;
    
        //Replace the table appropriate table Entity with the value of the UnityGameObject
        operation = TableOperation.Replace(existingGameObj); 
    
        table.Execute(operation);
    
        log.Verbose($"Updated object position");
    
        //Serialize the UnityGameObject
        string wnsNotificationPayload = JsonConvert.SerializeObject(existingGameObj);
    
        log.Info($"{wnsNotificationPayload}");
    
        var headers = new Dictionary<string, string>();
    
        headers["X-WNS-Type"] = @"wns/raw";
    
        //Send the raw notification to subscribed devices
        await notification.AddAsync(new WindowsNotification(wnsNotificationPayload, headers)); 
    
        log.Verbose($"Sent notification");
    }
    
    // This UnityGameObject represent a Table Entity
    public class UnityGameObject : TableEntity
    {
        public string Type { get; set; }
        public double X { get; set; }
        public double Y { get; set; }
        public double Z { get; set; }
        public string RowKey { get; set; }
    }
    

    Not

    İşlev, dahil edilen kitaplıkları kullanarak Unity sahneye taşınan nesnenin adını ve konumunu alır (bir C# nesnesi olarak, Unitygameobjectolarak adlandırılır). Bu nesne daha sonra oluşturulan tablodaki nesne parametrelerini güncelleştirmek için kullanılır. Bu işlem sonrasında, işlev, tüm abone olunan uygulamaları bildiren, oluşturduğunuz Bildirim Hub 'ı hizmetine bir çağrı yapar.

  18. Kod yerinde, Kaydet' e tıklayın.

  19. Sonra, < sayfanın sağ tarafındaki (ok) simgesine tıklayın.

    karşıya yükleme panelini aç

  20. Bir panel sağdan doğru bir şekilde kayarak görüntülenir. bu panelde Upload' a tıklayın ve bir dosya tarayıcısı görüntülenir.

  21. daha önce Not Defteri ' de oluşturduğunuz project. json dosyasına gidin ve ardından düğmesine tıklayın. Bu dosya, işlevinizin kullanacağı kitaplıkları tanımlar.

    JSON yükleme

  22. Dosya karşıya yüklendiğinde, sağ taraftaki panelde görüntülenir. Bunu tıklatmak, işlev Düzenleyicisi içinde açılır. Sonraki görüntüyle (adım 23 ' ün altında) tam olarak aynı görünmesi gerekir.

  23. Ardından, soldaki panelde, işlevler' ın altında tümleştir bağlantısına tıklayın.

    tümleştirin işlevi

  24. Sonraki sayfada, sağ üst köşede, Gelişmiş Düzenleyici ' ye (aşağıdaki gibi) tıklayın.

    Gelişmiş düzenleyiciyi aç

  25. Bir function. JSON dosyası, aşağıdaki kod parçacığı ile değiştirilmeleri gereken Merkez panelinde açılacak. Bu, oluşturduğunuz işlevi ve işleve geçirilen parametreleri tanımlar.

    {
    "bindings": [
        {
        "authLevel": "function",
        "type": "httpTrigger",
        "methods": [
            "get",
            "post"
        ],
        "name": "gameObj",
        "direction": "in"
        },
        {
        "type": "table",
        "name": "table",
        "tableName": "SceneObjectsTable",
        "connection": "mrnothubstorage_STORAGE",
        "direction": "in"
        },
        {
        "type": "notificationHub",
        "direction": "out",
        "name": "notification",
        "hubName": "MR_NotHub_ServiceInstance",
        "connection": "MRNotHubNS_DefaultFullSharedAccessSignature_NH",
        "platform": "wns"
        }
    ]
    }
    
  26. Düzenleyiciniz şimdi aşağıdaki görüntüye benzer şekilde görünmelidir:

    Standart düzenleyiciye geri dön

  27. Az önce eklediğiniz giriş parametrelerinin tablo ve depolama ayrıntılarınız ile eşleşmeyebilir ve bu nedenle, bilgileriniz ile güncelleştirilmeleri gerekir. Bunu bir sonraki konu başlığı altında kullanmayın. Geri gitmek için sayfanın sağ üst köşesindeki Standart düzenleyici bağlantısına tıklamanız yeterlidir.

  28. standart düzenleyiciyegeri döndüğünüzde, girişleraltında Azure tablo Depolama (tablo)öğesine tıklayın.

    Tablo girişleri

  29. Farklı olabileceğinden (aşağıdaki adımların altında bir görüntü olduğundan ) bilgilerinizin eşleştiğinden emin olun:

    1. tablo adı: Azure Depolama, tablolar hizmetiniz içinde oluşturduğunuz tablonun adı.

    2. Depolama hesap bağlantısı: açılan menü ile birlikte görünen yeni' ye tıklayın ve pencerenin sağında bir panel görüntülenir.

      Yeni depolama alanı

      1. işlev uygulamalarını barındırmak için daha önce oluşturduğunuz Depolama hesabınızıseçin.

      2. Depolama hesabı bağlantı değerinin oluşturulduğunu fark edeceksiniz.

      3. İşiniz bittiğinde Kaydet ' e bastığınızdan emin olun.

    3. Giriş sayfası, artık bilgilerinizi göstererek aşağıdaki ile eşleşmelidir.

      Giriş Tamam

  30. Sonra, Azure Notification Hub (bildirim) ' a tıklayarak çıktılar' e tıklayın. Farklı olabileceğinden, aşağıdaki adımlardan bilgilerinizin eşleştiğinden emin olun (aşağıdaki adımların altında bir görüntü vardır):

    1. Bildirim Hub 'ı adı: Bu, daha önce oluşturduğunuz Notification Hub Service örneğinizin adıdır.

    2. Notification Hubs ad alanı bağlantısı: açılan menü ile birlikte görünen Yeni' ye tıklayın.

      çıkışları denetle

    3. Bağlantı açılan penceresi görünür (aşağıdaki görüntüye bakın); burada, daha önce ayarladığınız Bildirim Hub 'ınınad alanını seçmeniz gerekir.

    4. Orta açılan menüden Bildirim Hub 'ınızın adını seçin.

    5. İlke açılan menüsünü, Defaultfullsharedaccesssignatureolarak ayarlayın.

    6. Geri dönmek için Seç düğmesine tıklayın.

      çıkış güncelleştirmesi

  31. Çıktılar sayfası artık aşağıdaki gibi, ancak bilgileriniz ile eşleşmelidir. Kaydet'e bastığınızdan emin olun.

Uyarı

Bildirim Hub 'ı adını doğrudan düzenlemeyin (Bu, tüm adımları doğru bir şekilde takip ettiğiniz için Gelişmiş Düzenleyicikullanılarak yapılmalıdır.

Çıkışlar tamam

  1. Bu noktada, çalıştığından emin olmak için işlevini test etmelisiniz. Bunu yapmak için:

    1. İşlev sayfasına daha fazla gidin:

      Çıkışlar tamam

    2. İşlev sayfasına dönün, sayfanın sağ tarafındaki Test sekmesine tıklayarak Test dikey penceresini açın:

      Çıkışlar tamam

    3. Dikey pencerenin İstek gövdesi metin kutusu içinde, aşağıdaki kodu yapıştırın:

      {  
          "Type":null,
          "X":3,
          "Y":0,
          "Z":1,
          "PartitionKey":null,
          "RowKey":"Obj2",
          "Timestamp":"0001-01-01T00:00:00+00:00",
          "ETag":null
      }
      
    4. Test kodu yerine sağ alt taraftaki Çalıştır düğmesine tıklayın ve test çalıştırılır. Testin çıkış günlükleri, işlev kodunuzun altındaki konsol alanında görüntülenir.

      Çıkışlar tamam

    Uyarı

    Yukarıdaki test başarısız olursa, yukarıdaki adımları tam olarak, özellikle de tümleştir paneliiçindeki ayarları izletiğinizi iki kez kontrol etmeniz gerekecektir.

Bölüm 7-Masaüstü Unity Project ayarlama

Önemli

Artık oluşturmakta olduğunuz masaüstü uygulaması Unity düzenleyicisinde çalışmayacaktır. Visual Studio (veya dağıtılan uygulama) kullanılarak uygulamanın derlenmesi sonrasında düzenleyicinin dışında çalıştırılması gerekir.

Aşağıda, Unity ve karma gerçeklik ile geliştirme için tipik bir kurulum verilmiştir ve bu nedenle diğer projelere yönelik iyi bir şablondur.

Karma Gerçeklik derinlikli kulaklığınızın kurulumunu yapın ve test edin.

Not

Bu kurs için hareket denetleyicileri gerektirmeyecektir . Derinlikli kulaklık kurmayı desteklemek istiyorsanız lütfen Windows Mixed Reality ayarlama hakkında bu bağlantıyıizleyin.

  1. Unity 'yi açın ve Yeni' ye tıklayın.

    yeni Unity projesi

  2. Unity Project adı sağlamanız gerekir, unitydesktop, Proje türünün 3Bolarak ayarlandığından emin olun. Konumu sizin için uygun bir yere ayarlayın (unutmayın, kök dizinlerin yakınına daha iyi). Ardından proje oluştur' a tıklayın.

    proje oluştur

  3. Unity açık olduğunda, varsayılan komut dosyası düzenleyicisininVisual Studioolarak ayarlanmış olması gerekir. Tercihleri Düzenle ' ye gidin ve sonra yeni penceresinden dış araçlar' a gidin. dış betik düzenleyicisiniVisual Studio 2017olarak değiştirin. Tercihler penceresini kapatın.

    Dış VS araçlarını ayarla

  4. sonra, dosyaderleme Ayarlar ' ne gidin ve Evrensel Windows Platformu' i seçin, sonra seçiminizi uygulamak için platformu değiştir düğmesine tıklayın.

    anahtar platformları

  5. hala dosyaderleme Ayarlar, şunları yaptığınızdan emin olun:

    1. Hedef cihazherhangi bir cihaza ayarlanmış

      Bu uygulama Masaüstü için olacak, bu nedenle herhangi bir cihaz olmalıdır

    2. Yapı türüD3D olarak ayarlandı

    3. SDKen son yüklü olarak ayarlandı

    4. Visual Studio sürümüen son yüklü olarak ayarlandı

    5. Oluşturma ve çalıştırma , yerel makine olarak ayarlandı

    6. Burada, sahneyi kaydetme ve yapıya ekleme gibi bir değer vardır.

      1. Açık sahneler Ekleseçeneğini belirleyerek bunu yapın. Bir Kaydet penceresi görüntülenir.

        Açık sahneler ekleme

      2. Bu, yeni klasör oluşturmak için yeni bir klasör oluşturun ve gelecekte yeni bir klasör seçin.

        yeni sahneler klasörü

      3. Yeni oluşturulan sahneler klasörünüzü açın ve ardından dosya adı: metin alanına NH_Desktop_Sceneyazın ve ardından Kaydet' e basın.

        Yeni NH_Desktop_Scene

    7. yapı Ayarlariçindeki kalan ayarlar şimdilik varsayılan olarak bırakılmalıdır.

  6. aynı pencerede oynatıcı Ayarlar düğmesine tıklayın, bu işlem ilgili paneli ınspector 'ın bulunduğu alanda açar.

  7. Bu panelde, bazı ayarların doğrulanması gerekir:

    1. diğer Ayarlar sekmesinde:

      1. Betik çalışma zamanı sürümüdeneysel olmalıdır (.NET 4,6 eşdeğeri)

      2. Komut dosyası arka ucu.net olmalıdır

      3. API Uyumluluk düzeyi.NET 4,6 olmalıdır

        4,6 NET sürümü

    2. yayımlama Ayarlar sekmesi içinde, yetenekleraltında şunları denetleyin:

      • InternetClient

        Internet istemcisini işaretle

  8. derleme AyarlarUnity C# projelerine geri dön, bunun yanındaki onay kutusunu işaretleyin.

  9. derleme Ayarlar penceresini kapatın.

  10. sahnelerinizi kaydedin ve dosyaProject sahne/dosyakaydet Projectkaydedin.

    Önemli

    Bu proje (masaüstü uygulaması) için Unity kurulum bileşenini atlamak ve koda doğrudan kod ile devam etmek istiyorsanız, bu. unitypackage indirin, budosyayı projenize özel bir paketolarak içeri aktarın ve ardından Bölüm 9' dan devam edin. Komut dosyası bileşenlerini yine de eklemeniz gerekir.

Bölüm 8-Unity 'de dll 'Leri Içeri aktarma

Unity için azure Depolama kullanacaksınız (kendisi, azure için .net SDK ile yararlanır). daha fazla bilgi için Unity için Azure Depolama ilgili bu bağlantıyıizleyin.

Unity 'de, içeri aktarma işleminden sonra eklentilerin yeniden yapılandırılması gereken bilinen bir sorun var. Bu adımlar (Bu bölümdeki 4-7), hata çözümlendikten sonra artık gerekli olmayacaktır.

SDK 'Yı kendi projenize aktarmak için, GitHub 'den en son . unitypackage 'u indirdiğinizden emin olun. Ardından aşağıdakileri yapın:

  1. Varlıklar için özel paket içeri aktarma menü seçeneğini kullanarak . unitypackage öğesini Unity 'ye ekleyin.

  2. açılan Unity paketi içeri aktar kutusunda, eklentiDepolamaaltındaki her şeyi seçebilirsiniz. Bu kurs için gerekli olmadığından, diğer her şeyin işaretini kaldırın.

    pakete aktar

  3. Öğeleri projenize eklemek için Içeri aktar düğmesine tıklayın.

  4. Project görünümündeki eklentiler altındaki Depolama klasörüne gidin ve yalnızcaşu eklentileri seçin:

    • Microsoft. Data. Edm
    • Microsoft. Data. OData
    • Microsoft.WindowsAzure.Storage
    • Newtonsoft.Json
    • System. uzamsal

Tüm platformun işaretini kaldır

  1. Bu belirli eklentiler seçiliykenTüm platformlarınişaretini kaldırınvewsaplayerseçeneğinin işaretini kaldırınve Uygula' ya tıklayın.

    Platform dll 'leri uygulama

    Not

    Bu belirli eklentileri yalnızca Unity düzenleyicisinde kullanılacak şekilde işaretliyoruz. Bunun nedeni, proje Unity 'den verildikten sonra kullanılacak WSA klasöründe aynı eklentilerin farklı sürümleri vardır.

  2. Depolama eklentisi klasöründe yalnızca şunları seçin:

    • Microsoft. Data. Services. Client

      dll 'ler için işlem ayarlama

  3. Platform Ayarlar altında işleme yok kutusunu işaretleyin ve uygula' ya tıklayın.

    hiçbir işleme uygulama

    Not

    Unity derleme Patcher bu eklentiyi işlerken zorluk yaptığından, bu eklentiyi "işlemez" olarak işaretliyoruz. Eklenti işlenmese de çalışmaya devam edecektir.

Bölüm 9-Masaüstü Unity projesinde Tabletosahnenin sınıfını oluşturma

Şimdi bu uygulamayı çalıştırmak için kodu içeren betikleri oluşturmanız gerekir.

Oluşturmanız gereken ilk betik Tabletosahtirve bundan sorumludur:

  • Azure tablosu içindeki varlıklar okunuyor.
  • Tablo verilerini kullanarak hangi nesnelerin ve hangi konumda oluşturulacağı belirlenir.

Oluşturmanız gereken ikinci betik Cloudsah'tir ve bundan sorumludur:

  • Kullanıcının sahne etrafında nesneleri sürüklemeye izin vermek için sol tıklama olayını kaydetme.
  • Bu Unity sahöğesinden nesne verilerini serileştirin ve Azure İşlev Uygulaması gönderebilirsiniz.

Bu sınıfı oluşturmak için:

  1. Project panelinde bulunan varlık klasörüne sağ tıklayın, klasör oluştur ' a tıklayın . Klasör betikleriniadlandırın.

    betikler klasörü oluştur

    betik klasörü oluştur 2

  2. Açmak için, yeni oluşturulan klasöre çift tıklayın.

  3. Betikler klasörünün içine sağ tıklayın, C# betiğioluştur ' a tıklayın. Betik Tabletosahiniadlandırın.

    Yeni c# betiğitabletosahneyi yeniden adlandırma

  4. Visual Studio 2017 ' de açmak için betiğe çift tıklayın.

  5. Aşağıdaki ad alanlarını ekleyin:

    using Microsoft.WindowsAzure.Storage;
    using Microsoft.WindowsAzure.Storage.Auth;
    using Microsoft.WindowsAzure.Storage.Table;
    using UnityEngine;
    
  6. Sınıfı içinde, aşağıdaki değişkenleri ekleyin:

        /// <summary>    
        /// allows this class to behave like a singleton
        /// </summary>    
        public static TableToScene instance;
    
        /// <summary>    
        /// Insert here you Azure Storage name     
        /// </summary>    
        private string accountName = " -- Insert your Azure Storage name -- ";
    
        /// <summary>    
        /// Insert here you Azure Storage key    
        /// </summary>    
        private string accountKey = " -- Insert your Azure Storage key -- ";
    

    Not

    accountName değerini azure Depolama service name ve accountkey değeri ile azure portalında azure Depolama hizmetinde bulunan anahtar değeriyle değiştirin (aşağıdaki görüntüye bakın).

    hesap anahtarını getir

  7. Şimdi, sınıfı başlatmak için Start () ve uyanık () yöntemlerini ekleyin.

        /// <summary>
        /// Triggers before initialization
        /// </summary>
        void Awake()
        {
            // static instance of this class
            instance = this;
        }
    
        /// <summary>
        /// Use this for initialization
        /// </summary>
        void Start()
        {  
            // Call method to populate the scene with new objects as 
            // pecified in the Azure Table
            PopulateSceneFromTableAsync();
        }
    
  8. Tabletosahnenin sınıfında, Azure tablosundan değerleri alacak ve bunları sahnedeki uygun temelleri oluşturacak şekilde kullanan yöntemi ekleyin.

        /// <summary>    
        /// Populate the scene with new objects as specified in the Azure Table    
        /// </summary>    
        private async void PopulateSceneFromTableAsync()
        {
            // Obtain credentials for the Azure Storage
            StorageCredentials creds = new StorageCredentials(accountName, accountKey);
    
            // Storage account
            CloudStorageAccount account = new CloudStorageAccount(creds, useHttps: true);
    
            // Storage client
            CloudTableClient client = account.CreateCloudTableClient(); 
    
            // Table reference
            CloudTable table = client.GetTableReference("SceneObjectsTable");
    
            TableContinuationToken token = null;
    
            // Query the table for every existing Entity
            do
            {
                // Queries the whole table by breaking it into segments
                // (would happen only if the table had huge number of Entities)
                TableQuerySegment<AzureTableEntity> queryResult = await table.ExecuteQuerySegmentedAsync(new TableQuery<AzureTableEntity>(), token); 
    
                foreach (AzureTableEntity entity in queryResult.Results)
                {
                    GameObject newSceneGameObject = null;
                    Color newColor;
    
                    // check for the Entity Type and spawn in the scene the appropriate Primitive
                    switch (entity.Type)
                    {
                        case "Cube":
                            // Create a Cube in the scene
                            newSceneGameObject = GameObject.CreatePrimitive(PrimitiveType.Cube);
                            newColor = Color.blue;
                            break;
    
                        case "Sphere":
                            // Create a Sphere in the scene
                            newSceneGameObject = GameObject.CreatePrimitive(PrimitiveType.Sphere);
                            newColor = Color.red;
                            break;
    
                        case "Cylinder":
                            // Create a Cylinder in the scene
                            newSceneGameObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
                            newColor = Color.yellow;
                            break;
                        default:
                            newColor = Color.white;
                            break;
                    }
    
                    newSceneGameObject.name = entity.RowKey;
    
                    newSceneGameObject.GetComponent<MeshRenderer>().material = new Material(Shader.Find("Diffuse"))
                    {
                        color = newColor
                    };
    
                    //check for the Entity X,Y,Z and move the Primitive at those coordinates
                    newSceneGameObject.transform.position = new Vector3((float)entity.X, (float)entity.Y, (float)entity.Z);
                }
    
                // if the token is null, it means there are no more segments left to query
                token = queryResult.ContinuationToken;
            }
    
            while (token != null);
        }
    
  9. Tabletosahneyi sınıfının dışında, tablo varlıklarınıseri hale getirmek ve seri durumdan çıkarmak için uygulama tarafından kullanılan sınıfı tanımlamanız gerekir.

        /// <summary>
        /// This objects is used to serialize and deserialize the Azure Table Entity
        /// </summary>
        [System.Serializable]
        public class AzureTableEntity : TableEntity
        {
            public AzureTableEntity(string partitionKey, string rowKey)
                : base(partitionKey, rowKey) { }
    
            public AzureTableEntity() { }
            public string Type { get; set; }
            public double X { get; set; }
            public double Y { get; set; }
            public double Z { get; set; }
        }
    
  10. Unity düzenleyicisine geri gitmeden önce kaydettiğinizden emin olun.

  11. Hiyerarşi panelinden ana kameraya tıklayın, böylece Özellikler denetçisindegörüntülenir.

  12. Betikler klasörü açıkken, tabletosahdosyası betiği ' ni seçin ve ana kamerayasürükleyin. Sonuç şu şekilde olmalıdır:

    Ana kameraya betik Ekle

Bölüm 10-Cloudsahnenin sınıfını masaüstü Unity 'de oluşturun Project

Oluşturmanız gereken ikinci betik Cloudsah'tir ve bundan sorumludur:

  • Kullanıcının sahne etrafında nesneleri sürüklemeye izin vermek için sol tıklama olayını kaydetme.

  • Bu Unity sahöğesinden nesne verilerini serileştirin ve Azure İşlev Uygulaması gönderebilirsiniz.

İkinci betiği oluşturmak için:

  1. Betikler klasörünün içine sağ tıklayın, Oluştur, C# betiği' ne tıklayın. Betiği Cloudsahneyi olarak adlandırın

    Yeni c# betiğicloudsahneyi yeniden adlandırma

  2. Aşağıdaki ad alanlarını ekleyin:

    using Newtonsoft.Json;
    using System.Collections;
    using System.Text;
    using System.Threading.Tasks;
    using UnityEngine;
    using UnityEngine.Networking;
    
  3. Aşağıdaki değişkenleri ekleyin:

        /// <summary>
        /// Allows this class to behave like a singleton
        /// </summary>
        public static CloudScene instance;
    
        /// <summary>
        /// Insert here you Azure Function Url
        /// </summary>
        private string azureFunctionEndpoint = "--Insert here you Azure Function Endpoint--";
    
        /// <summary>
        /// Flag for object being moved
        /// </summary>
        private bool gameObjHasMoved;
    
        /// <summary>
        /// Transform of the object being dragged by the mouse
        /// </summary>
        private Transform gameObjHeld;
    
        /// <summary>
        /// Class hosted in the TableToScene script
        /// </summary>
        private AzureTableEntity azureTableEntity;
    
  4. AzureFunctionEndpoint değerini, aşağıdaki görüntüde gösterildiği gibi Azure portalında Azure işlev uygulaması hizmetinde bulunan Azure işlev uygulaması URL 'siyle değiştirin:

    işlev URL 'sini al

  5. Şimdi, sınıfı başlatmak için Start () ve uyanık () yöntemlerini ekleyin.

        /// <summary>
        /// Triggers before initialization
        /// </summary>
        void Awake()
        {
            // static instance of this class
            instance = this;
        }
    
        /// <summary>
        /// Use this for initialization
        /// </summary>
        void Start()
        {
            // initialise an AzureTableEntity
            azureTableEntity = new AzureTableEntity();
        }
    
  6. Update () yönteminde, fare girişini algılayan aşağıdaki kodu ekleyin ve sürükleyin. Bu işlem, sahnedeki oyun nesnelerini de taşıyacaktır. Kullanıcı bir nesneyi sürükleyip bıraktı, bu, Azure tablosunu güncelleştirecek ve bildirimi tetikleyecek olan Azure İşlev Uygulaması hizmetini çağıran, nesnenin adını ve koordinatlarını Updatecloudsahnenin ()yöntemine geçilecektir.

        /// <summary>
        /// Update is called once per frame
        /// </summary>
        void Update()
        {
            //Enable Drag if button is held down
            if (Input.GetMouseButton(0))
            {
                // Get the mouse position
                Vector3 mousePosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 10);
    
                Vector3 objPos = Camera.main.ScreenToWorldPoint(mousePosition);
    
                Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    
                RaycastHit hit;
    
                // Raycast from the current mouse position to the object overlapped by the mouse
                if (Physics.Raycast(ray, out hit))
                {
                    // update the position of the object "hit" by the mouse
                    hit.transform.position = objPos;
    
                    gameObjHasMoved = true;
    
                    gameObjHeld = hit.transform;
                }
            }
    
            // check if the left button mouse is released while holding an object
            if (Input.GetMouseButtonUp(0) && gameObjHasMoved)
            {
                gameObjHasMoved = false;
    
                // Call the Azure Function that will update the appropriate Entity in the Azure Table
                // and send a Notification to all subscribed Apps
                Debug.Log("Calling Azure Function");
    
                StartCoroutine(UpdateCloudScene(gameObjHeld.name, gameObjHeld.position.x, gameObjHeld.position.y, gameObjHeld.position.z));
            }
        }
    
  7. Şimdi Updatecloudsahnenin () yöntemini aşağıdaki şekilde ekleyin:

        private IEnumerator UpdateCloudScene(string objName, double xPos, double yPos, double zPos)
        {
            WWWForm form = new WWWForm();
    
            // set the properties of the AzureTableEntity
            azureTableEntity.RowKey = objName;
    
            azureTableEntity.X = xPos;
    
            azureTableEntity.Y = yPos;
    
            azureTableEntity.Z = zPos;
    
            // Serialize the AzureTableEntity object to be sent to Azure
            string jsonObject = JsonConvert.SerializeObject(azureTableEntity);
    
            using (UnityWebRequest www = UnityWebRequest.Post(azureFunctionEndpoint, jsonObject))
            {
                byte[] jsonToSend = new System.Text.UTF8Encoding().GetBytes(jsonObject);
    
                www.uploadHandler = new UploadHandlerRaw(jsonToSend);
    
                www.uploadHandler.contentType = "application/json";
    
                www.downloadHandler = new DownloadHandlerBuffer();
    
                www.SetRequestHeader("Content-Type", "application/json");
    
                yield return www.SendWebRequest();
    
                string response = www.responseCode.ToString();
            }
        }
    
  8. Kodu kaydedin ve Unity 'ye dönün

  9. Cloudsahnenin betiğini ana kamerayasürükleyin.

    1. Hiyerarşi panelinden ana kameraya tıklayın, böylece Özellikler denetçisindegörüntülenir.

    2. Betikler klasörü açıkken cloudsahnenin betiğini seçin ve ana kamerayasürükleyin. Sonuç şu şekilde olmalıdır:

      bulut betiğini ana kameraya sürükleyin

bölüm 11-UWP 'ye masaüstü Project oluşturma

Bu projenin Unity bölümü için gereken her şey tamamlandı.

  1. derleme Ayarlar gidin (dosyaderleme Ayarlar).

  2. yapı Ayarlar penceresinde, oluştur' a tıklayın.

    projeyi oluştur

  3. Bir Dosya Gezgini penceresi açılır ve bunu oluşturmak için sizden bir konum istenir. Yeni bir klasör oluşturun (sol üst köşedeki Yeni klasör ' i tıklayarak) ve ardından Yapıolarak adlandırın.

    derleme için yeni klasör

    1. Yeni derlemeler klasörünü açın ve başka bir klasör oluşturun (daha Yeni bir klasör kullanarak) ve NH_Desktop_Appadlandırın.

      klasör adı NH_Desktop_App

    2. NH_Desktop_App seçili. Klasör Seç' e tıklayın. Projenin derlenmesi bir dakika veya daha fazla zaman alır.

  4. Aşağıdaki derleme, yeni projenizin konumunu gösteren Dosya Gezgini görüntülenir. Sonraki birkaç bölümde, önce diğer Unity projesini oluşturmanız gerektiği gibi, bunu açmaya gerek yoktur.

Bölüm 12-karma gerçeklik Unity Project ayarlama

Aşağıda, karma gerçeklik ile geliştirme için tipik bir kurulum ve bu nedenle diğer projeler için iyi bir şablondur.

  1. Unity 'yi açın ve Yeni' ye tıklayın.

    yeni Unity projesi

  2. şimdi bir Unity Project adı sağlamanız gerekir. Proje türünün 3Bolarak ayarlandığından emin olun. Konumu sizin için uygun bir yere ayarlayın (unutmayın, kök dizinlerin yakınına daha iyi). Ardından proje oluştur' a tıklayın.

    ad UnityMRNotifHub

  3. Unity açık olduğunda, varsayılan komut dosyası düzenleyicisininVisual Studioolarak ayarlanmış olması gerekir. Tercihleri Düzenle ' ye gidin ve sonra yeni penceresinden dış araçlar' a gidin. dış betik düzenleyicisiniVisual Studio 2017olarak değiştirin. Tercihler penceresini kapatın.

    dış düzenleyiciyi VS olarak ayarlama

  4. Ardından, Dosya Derleme Ayarlar'nagidin ve Platformu Değiştir düğmesine tıklayarak platformu Universal Windows Platformu'na getirin.

    platformları UWP'ye değiştirme

  5. Dosya DerlemeSi'neAyarlar ve şunların doğru olduğundan emin olun:

    1. Hedef Cihaz Herhangi Bir Cihaz olarak ayarlanır

      Hedef Microsoft HoloLens için Hedef Cihaz'HoloLens.

    2. Derleme TürüD3D olarak ayarlanmış

    3. SDK En son yüklü olarak ayarlanır

    4. Visual Studio Sürümü En son yüklü olarak ayarlanır

    5. Derleme ve Çalıştırma, Yerel Makine olarak ayarlanır

    6. Buradayken sahneyi kaydetmeye ve derlemeye eklemeye değer.

      1. Bunu yapmak için Açık Sahne Ekle'yi seçin. Bir kaydetme penceresi görüntülenir.

        açık sahne ekleme

      2. Bunun için yeni bir klasör oluşturun ve herhangi bir gelecek, sahne ve sonra Yeni klasör düğmesini seçerek yeni bir klasör oluşturun ve Bu klasörü Sahneler olarak adlayabilirsiniz.

        yeni sahneler klasörü

      3. Yeni oluşturduğunuz Sahneler klasörünü açın ve Dosya adı: metin alanına NH_MR_Scene yazınve Kaydet'e basın.

        yeni sahne - NH_MR_Scene

    7. Derleme ve Derleme Ayarlarkalan ayarlar şimdilik varsayılan olarak bırak bırak gerekir.

  6. Aynı pencerede Player Ayarlar düğmesine tıklayarak Denetçinin bulunduğu alanda ilgili paneli açar.

    oynatıcı ayarlarını açma

  7. Bu panelde birkaç ayarın doğrulanmış olması gerekir:

    1. Diğer Ayarlar:

      1. Betik Çalışma Zamanı Sürümü Deneysel olmalıdır (.NET 4.6 Eşdeğeri)

      2. Betik Arka Ucu.NET olmalı

      3. API Uyumluluk Düzeyi.NET 4.6 olmalı

        api uyumluluğu

    2. Panelin daha aşağılarında, XR Ayarlar 'de (Yayımlama Ayarlar altında bulunur)Sanal Gerçeklik Desteği'ni işaretleyerek Windows Mixed Reality SDK'sı eklendi

      xr ayarlarını güncelleştirme

    3. Yayımlama sekmesi Ayarlar özellikler altında yer alanve şu şekildedir:

      • InternetClient

        internet istemcisini işaretle

  8. Derleme çalışma Ayarlargeri dönüp Unity C# Projeleri artık gri değil: bunun yanındaki onay kutusunu işaretleyin.

  9. Bu değişiklikler yapıldı, derleme ve Ayarlar kapatın.

  10. Sahnenizi kaydedin ve Project Kaydet/ DosyaKaydet'i Project.

    Önemli

    Bu proje için Unity Ayarlama bileşenini (karma gerçeklik Uygulaması) atlayıp doğrudan koda devam etmek isterseniz, bu .unitypackage'ıindirebilir, Özel Paket olarak projenize aktarabilir ve ardından 14.Bölümden devam edin. Yine de betik bileşenlerini eklemeniz gerekir.

Bölüm 13 - Karma Gerçeklik Unity Sanal Project

Unity kitaplığı için Azure Depolama (Azure için .Net SDK'sı kullanır) kullanacağız. Unity ile Azure Depolama kullanma hakkında Depolama izleyin. Unity'de şu anda eklentilerin içeri aktarmadan sonra yeniden yapılandırılması gereken bilinen bir sorun vardır. Hata çözüldükten sonra bu adımlar (bu bölümde 4 - 7) gerekli olmayacaktır.

SDK'yı kendi projenize içeri aktararak en son .unitypackage paketini indirdiğinize emin olun. Ardından aşağıdakileri yapın:

  1. Varlıklar Paketi Özel Paketini İçeri Aktar menü seçeneğini kullanarak yukarıdan indirdiğiniz .unitypackage öğesini Unity'ye ekleyin.

  2. Açılan Unity Paketini İçeri Aktar kutusunda Plugin (Eklenti) altındaki her şeyi Depolama.

    paketi içeri aktarma

  3. Öğeleri projenize eklemek için İçeri Aktar düğmesine tıklayın.

  4. Depolama görünümünde Eklentiler'in altındaki Project klasörüne gidin ve yalnızca aşağıdaki eklentileri seçin:

    • Microsoft.Data.Edm
    • Microsoft.Data.OData
    • Microsoft.WindowsAzure.Storage
    • Newtonsoft.Json
    • System.Spatial

    eklentileri seçme

  5. Bu belirli eklentiler seçili durumdayken Herhangi Bir Platform seçeneğinin işaretinikaldırın veWSAPlayer öğesinin işaretini kaldırın ve Uygula'ya tıklayın.

    platform değişikliklerini uygulama

    Not

    Bu eklentileri yalnızca Unity Düzenleyicisi'nde kullanılacak şekilde işaretlersiniz. Bunun nedeni, proje Unity'den dışarı aktarıldıktan sonra WSA klasöründe aynı eklentilerin farklı sürümleri olmasıdır.

  6. Depolama eklenti klasöründe yalnızca öğesini seçin:

    • Microsoft.Data.Services.Client

      veri hizmetleri istemcisini seçme

  7. PlatformUygulaması'nın altındaki İşlem Ayarlar uygula'ya tıklayın.

    işleme

    Not

    Unity derleme düzeltme ekicisi bu eklentiyi işlemede zor olduğundan, bu eklentiyi "İşleme" olarak işaretlledin. Eklenti işlenmese bile çalışmaya devam ediyor.

Bölüm 14 - Karma gerçeklik Unity projesinde TableToScene sınıfı oluşturma

TableToScenesınıfı, Bölüm 9'da açıklananla aynıdır. 9.Bölümde açıklanan yordamın aynısını Project Unity karma gerçeklik içinde aynı sınıfı oluşturun.

Bu Bölümü tamamlandıktan sonra unity projenizin her ikisinde de ana kamerada bu sınıf ayarlanır.

Bölüm 15 - Karma Gerçeklik Unity belgesinde NotificationReceiver Project

Oluşturmanız gereken ikinci betik NotificationReceiverbetiğidir ve bu betik şu sorumluluktan sorumludur:

  • Başlatma sırasında uygulamayı Notification Hub'a kaydetme.
  • Notification Hub'dan gelen bildirimleri dinleme.
  • Alınan bildirimlerden nesne verilerinirializing.
  • GameObjects'i, deserialized verilerine göre sahnede hareket ettirin.

NotificationReceiver betiği oluşturmak için:

  1. Betikler klasörünün içine sağ tıklayın, Oluştur, C# Betiği'ne tıklayın. Betiği NotificationReceiver olarak ad girin.

    create new c# scriptname it NotificationReceiver

  2. Betiği açmak için çift tıklayın.

  3. Aşağıdaki ad alanlarını ekleyin:

    //using Microsoft.WindowsAzure.Messaging;
    using Newtonsoft.Json;
    using System;
    using System.Collections;
    using UnityEngine;
    
    #if UNITY_WSA_10_0 && !UNITY_EDITOR
    using Windows.Networking.PushNotifications;
    #endif
    
  4. Aşağıdaki değişkenleri ekleme:

        /// <summary>
        /// allows this class to behave like a singleton
        /// </summary>
        public static NotificationReceiver instance;
    
        /// <summary>
        /// Value set by the notification, new object position
        /// </summary>
        Vector3 newObjPosition;
    
        /// <summary>
        /// Value set by the notification, object name
        /// </summary>
        string gameObjectName;
    
        /// <summary>
        /// Value set by the notification, new object position
        /// </summary>
        bool notifReceived;
    
        /// <summary>
        /// Insert here your Notification Hub Service name 
        /// </summary>
        private string hubName = " -- Insert the name of your service -- ";
    
        /// <summary>
        /// Insert here your Notification Hub Service "Listen endpoint"
        /// </summary>
        private string hubListenEndpoint = "-Insert your Notification Hub Service Listen endpoint-";
    
  5. hubName değerini Notification Hub Hizmeti adınızla, hubListenEndpoint değerini ise Azure Portal'daki Erişim İlkeleri sekmesindeki Azure Notification Hub Service adlı uç nokta değeriyle (aşağıdaki görüntüye bakın) ekleyin.

    notification hubs ilke uç noktası ekleme

  6. Şimdi start() veAwake() yöntemlerini sınıfını başlatmak için ekleyin.

        /// <summary>
        /// Triggers before initialization
        /// </summary>
        void Awake()
        {
            // static instance of this class
            instance = this;
        }
    
        /// <summary>
        /// Use this for initialization
        /// </summary>
        void Start()
        {
            // Register the App at launch
            InitNotificationsAsync();
    
            // Begin listening for notifications
            StartCoroutine(WaitForNotification());
        }
    
  7. Uygulamanın Ana İş Parçacığı ile çatışmadan Bildirim Hub'ı Kitaplığı'dan bildirim alamasına izin vermek için WaitForNotification yöntemini ekleyin:

        /// <summary>
        /// This notification listener is necessary to avoid clashes 
        /// between the notification hub and the main thread   
        /// </summary>
        private IEnumerator WaitForNotification()
        {
            while (true)
            {
                // Checks for notifications each second
                yield return new WaitForSeconds(1f);
    
                if (notifReceived)
                {
                    // If a notification is arrived, moved the appropriate object to the new position
                    GameObject.Find(gameObjectName).transform.position = newObjPosition;
    
                    // Reset the flag
                    notifReceived = false;
                }
            }
        }
    
  8. Aşağıdaki initNotificationAsync()yöntemi, başlatma sırasında uygulamayı notification Hub Hizmeti'ne kaydedecek. Unity projeyi derlemesi mümkün olmayacaktır. Azure Messaging Nuget paketini içeri aktarıyor ve bu paketin Visual Studio.

        /// <summary>
        /// Register this application to the Notification Hub Service
        /// </summary>
        private async void InitNotificationsAsync()
        {
            // PushNotificationChannel channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
    
            // NotificationHub hub = new NotificationHub(hubName, hubListenEndpoint);
    
            // Registration result = await hub.RegisterNativeAsync(channel.Uri);
    
            // If registration was successful, subscribe to Push Notifications
            // if (result.RegistrationId != null)
            // {
            //     Debug.Log($"Registration Successful: {result.RegistrationId}");
            //     channel.PushNotificationReceived += Channel_PushNotificationReceived;
            // }
        }
    
  9. Aşağıdaki Channel_PushNotificationReceived() işleyicisi,bir bildirim her alınca tetiklenir. Masaüstü Uygulaması'nın üzerine taşınan Azure Tablo Varlığı olacak olan bildirimin, ardından MR sahnesinde karşılık gelen GameObject'i aynı konuma taşıması gerekir.

    Önemli

    Kod, Azure Mesajlaşma kitaplığına başvurarak Nuget Paket Yöneticisi kullanarak Unity projesini Visual Studio. Bu nedenle, açıklamaya almadıkça Unity projesinin derlemesi mümkün olmayacaktır. Projenizi derlemeniz ve ardından Unity'ye dönmek isterseniz bu kodu yeniden açıklamanız gerektiğinin farkında olmak gerekir.

        ///// <summary>
        ///// Handler called when a Push Notification is received
        ///// </summary>
        //private void Channel_PushNotificationReceived(PushNotificationChannel sender, PushNotificationReceivedEventArgs args)    
        //{
        //    Debug.Log("New Push Notification Received");
        //
        //    if (args.NotificationType == PushNotificationType.Raw)
        //    {
        //        //  Raw content of the Notification
        //        string jsonContent = args.RawNotification.Content;
        //
        //        // Deserialise the Raw content into an AzureTableEntity object
        //        AzureTableEntity ate = JsonConvert.DeserializeObject<AzureTableEntity>(jsonContent);
        //
        //        // The name of the Game Object to be moved
        //        gameObjectName = ate.RowKey;          
        //
        //        // The position where the Game Object has to be moved
        //        newObjPosition = new Vector3((float)ate.X, (float)ate.Y, (float)ate.Z);
        //
        //        // Flag thats a notification has been received
        //        notifReceived = true;
        //    }
        //}
    
  10. Unity Düzenleyicisi'ne geri dönmeden önce değişikliklerinizi kaydetmeyi unutmayın.

  11. Hiyerarşi panelinden ana kameraya tıklayın, böylece Özellikler denetçisindegörüntülenir.

  12. Betikler klasörü açıkken, notificationahize betiğini seçin ve ana kamerayasürükleyin. Sonuç şu şekilde olmalıdır:

    bildirim alıcısı betiği kameraya sürükleyin

    Not

    bu Microsoft HoloLens için geliştiriyorsanız, ana kameranınkamera bileşenini güncelleştirmeniz gerekir, böylece şunlar olur:

    • Clear bayrakları: düz renk
    • Arka plan: siyah

bölüm 16-UWP 'ye karma gerçeklik Project oluşturma

Bu bölüm, önceki proje için derleme işlemi ile aynıdır. Bu projenin Unity bölümü için gereken her şey tamamlandı, bu nedenle Unity 'den derlemek için zaman.

  1. derleme Ayarlar gidin ( dosyaderleme Ayarlar ).

  2. yapı Ayarlar menüsünde Unity C# projelerinin* eklendiğinden emin olun (bu projedeki betikleri, derlemeden sonra düzenlemenizi sağlar).

  3. Bu işlem tamamlandıktan sonra, Oluştur' a tıklayın.

    projeyi oluştur

  4. Bir Dosya Gezgini penceresi açılır ve bunu oluşturmak için sizden bir konum istenir. Yeni bir klasör oluşturun (sol üst köşedeki Yeni klasör ' i tıklayarak) ve ardından Yapıolarak adlandırın.

    derlemeler klasörü oluştur

    1. Yeni derlemeler klasörünü açın ve başka bir klasör oluşturun (daha Yeni bir klasör kullanarak) ve NH_MR_Appadlandırın.

      NH_MR_Apps klasörü oluştur

    2. NH_MR_App seçili. Klasör Seç' e tıklayın. Projenin derlenmesi bir dakika veya daha fazla zaman alır.

  5. Yapı sonrasında, yeni projenizin konumunda bir Dosya Gezgini penceresi açılır.

bölüm 17-unitymrnotifhub çözümüne NuGet paketleri ekleme

Uyarı

aşağıdaki NuGet paketlerini eklediğinizde (ve sonraki bölümdekodun açıklamasını bulduktan sonra), bu kodun Unity Project yeniden açıldığı sırada hata olacağını unutmayın. Yeniden dönüp Unity düzenleyicisinde düzenleme yapmaya devam etmek istiyorsanız, daha sonra Visual Studio geri döndüğünüzde, daha sonra yeniden açıklama eklemeniz gerekir.

karma gerçeklik derlemesi tamamlandıktan sonra, oluşturduğunuz karma gerçeklik projesine gidin ve çözümü Visual Studio 2017 ile açmak için bu klasördeki çözüm (. sln) dosyasına çift tıklayın. şimdi windowsazure. Messaging. managed NuGet paketini eklemeniz gerekir; bu, bildirim Hub 'ından bildirimleri almak için kullanılan bir kitaplıktır.

NuGet paketini içeri aktarmak için:

  1. Çözüm Gezginiçözümünüze sağ tıklayın

  2. NuGet paketlerini yönet' e tıklayın.

    NuGet yöneticisini aç

  3. Tarayıcı sekmesini seçin ve windowsazure. Messaging. Managediçin arama yapın.

    Windows Azure mesajlaşma paketi 'ni bul

  4. Sonucu (aşağıda gösterildiği gibi) seçin ve sağdaki pencerede Projectseçeneğinin yanındaki onay kutusunu seçin. bu, Projectyanındaki onay kutusuna bir onay işareti yerleştirir -CSharp ve unitymrnotifhub projesinin yanındaki onay kutusu ile birlikte.

    Tüm projeleri işaretle

  5. Başlangıçta belirtilen sürüm bu proje ile uyumlu olmayabilir. Bu nedenle, Sürüm' ün yanındaki açılan menüye tıklayın ve sürüm 0.1.7.9' e tıklayın ve ardından Install' a tıklayın.

  6. artık NuGet paketini yüklemeyi tamamladınız. Notificationahize sınıfına girdiğiniz açıklamalı kodu bulun ve açıklamaları kaldırın...

Bölüm 18-Unitymrlıhub uygulamasını düzenleme, Notificationalıcı sınıfı

NuGet paketlerinieklendikten sonra, notificationalıcı sınıfının içindeki bazı kodların açıklamasını belirlemeniz gerekir.

Şunları içerir:

  1. En üstteki ad alanı:

    using Microsoft.WindowsAzure.Messaging;
    
  2. Initnotificationsasync () yöntemi içindeki tüm kod:

        /// <summary>
        /// Register this application to the Notification Hub Service
        /// </summary>
        private async void InitNotificationsAsync()
        {
            PushNotificationChannel channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
    
            NotificationHub hub = new NotificationHub(hubName, hubListenEndpoint);
    
            Registration result = await hub.RegisterNativeAsync(channel.Uri);
    
            // If registration was successful, subscribe to Push Notifications
            if (result.RegistrationId != null)
            {
                Debug.Log($"Registration Successful: {result.RegistrationId}");
                channel.PushNotificationReceived += Channel_PushNotificationReceived;
            }
        }
    

Uyarı

Yukarıdaki kodda bir açıklama bulunur: Bu açıklamanın yanlışlıkla açıklanmamasını sağlayın (! varsa kod derlenmeyecektir).

  1. Son olarak, Channel_PushNotificationReceived olayı:

        /// <summary>
        /// Handler called when a Push Notification is received
        /// </summary>
        private void Channel_PushNotificationReceived(PushNotificationChannel sender, PushNotificationReceivedEventArgs args)
        {
            Debug.Log("New Push Notification Received");
    
            if (args.NotificationType == PushNotificationType.Raw)
            {
                //  Raw content of the Notification
                string jsonContent = args.RawNotification.Content;
    
                // Deserialize the Raw content into an AzureTableEntity object
                AzureTableEntity ate = JsonConvert.DeserializeObject<AzureTableEntity>(jsonContent);
    
                // The name of the Game Object to be moved
                gameObjectName = ate.RowKey;
    
                // The position where the Game Object has to be moved
                newObjPosition = new Vector3((float)ate.X, (float)ate.Y, (float)ate.Z);
    
                // Flag thats a notification has been received
                notifReceived = true;
            }
        }
    

Bu açıklama açıklanmadan, kaydettikten sonra bir sonraki bölüme devam edin.

Bölüm 19-karma gerçeklik projesini mağaza uygulamasıyla Ilişkilendirme

Artık, karma gerçeklik projesini laboratuvarın başlangıcında oluşturduğunuz mağaza uygulamasıyla ilişkilendirmeniz gerekir.

  1. Çözümü açın.

  2. Çözüm Gezgini panelinde UWP uygulaması Project sağ tıklayın, mağazayagit ve uygulamayı mağaza ile ilişkilendir....

    Mağaza ilişkilendirmesini aç

  3. uygulamanızı Windows deposuyla ilişkilendiradlı yeni bir pencere görüntülenir. İleri’ye tıklayın.

    sonraki ekrana git

  4. Bu işlem, oturum açtığınız hesapla ilişkili tüm uygulamaları yükler. Hesabınızda oturum açmadıysanız Bu sayfada oturum açabilirsiniz.

  5. Bu öğreticinin başlangıcında oluşturduğunuz Mağaza uygulamasının adını bulun ve seçin. Ardından İleri'ye tıklayın.

    Mağaza adınızı bulun ve seçin

  6. İlişkilendir’e tıklayın.

    uygulamayı ilişkilendirin

  7. Uygulamanız artık mağaza uygulamasıyla ilişkilendirilir . Bildirimleri etkinleştirmek için bu gereklidir.

Bölüm 20-UnityMRNotifHub ve Unitydesktoplarhub uygulamalarını dağıtın

Bu bölüm iki kişi ile daha kolay olabilir, bu nedenle, bilgisayar masaüstünüzde çalışan bir uygulama ve modern kulaklığınızın içindeki diğer uygulamalar da dahil olmak üzere iki kişiyle daha kolay olabilir.

Modern kulaklık uygulaması, sahneye değişiklik almayı bekliyor (yerel oyun nesnelerinin konumunu değiştirir) ve masaüstü uygulaması, MR uygulamasıyla paylaşılacak yerel sahnelerinde (konum değişiklikleri) değişiklik yapar. Önce MR uygulamasını, sonra da alıcının dinlemeye başlayabilmesi için masaüstü uygulaması tarafından dağıtılması mantıklı olur.

Unitymrnotifhub uygulamasını yerel makinenize dağıtmak için:

  1. Visual Studio 2017' de unitymrnotifhub uygulamanızın çözüm dosyasını açın.

  2. Çözüm platformundax86, yerel makine' yi seçin.

  3. Çözüm yapılandırmasındaHata Ayıkla' yı seçin.

    proje yapılandırmasını ayarla

  4. Uygulamayı makinenize dışarıdan yüklemek için derleme menüsüne gidin ve Çözümü dağıt ' a tıklayın.

  5. Uygulamanız artık yüklü uygulamalar listesinde görünmelidir, başlatılmaya hazırdır.

Unitydesktopnotifhub uygulamasını yerel makinede dağıtmak için:

  1. Visual Studio 2017' de unitydesktopnotifhub uygulamanızın çözüm dosyasını açın.

  2. Çözüm platformundax86, yerel makine' yi seçin.

  3. Çözüm yapılandırmasındaHata Ayıkla' yı seçin.

    proje yapılandırmasını ayarla

  4. Uygulamayı makinenize dışarıdan yüklemek için derleme menüsüne gidin ve Çözümü dağıt ' a tıklayın.

  5. Uygulamanız artık yüklü uygulamalar listesinde görünmelidir, başlatılmaya hazırdır.

  6. Karma Gerçeklik uygulamasını, ardından Masaüstü uygulamasını başlatın.

Her iki uygulama da çalıştıran bir nesneyi masaüstü sahnede (sol fare düğmesini kullanarak) taşıyın. Bu konumsal değişiklikler yerel olarak yapılır, serileştirilir ve İşlev Uygulaması hizmetine gönderilir. İşlev Uygulaması hizmet daha sonra tabloyu Bildirim Hub 'ı ile birlikte güncelleştirecektir. Bir güncelleştirme almış olan Bildirim Hub 'ı, güncelleştirilmiş verileri doğrudan tüm kayıtlı uygulamalara (Bu durumda, bu örnekte, tam ekran kulaklık uygulaması) gönderir ve bundan sonra gelen verilerin serisini kaldırılır ve yeni konumsal verileri yerel nesnelere uygulayarak sahneye taşınır.

Azure Notification Hubs uygulamanızı tamamladınız

Tebrikler, Azure Notification Hubs hizmetinden yararlanan ve uygulamalar arasında iletişime izin veren bir karma gerçeklik uygulaması derlediniz.

son ürün-son

Ek alıştırmalar

Alıştırma 1

Oyun nesnelerinin rengini değiştirme ve bu bildirimi sahneyi görüntüleyen diğer uygulamalara gönderme hakkında bilgi verebilir misiniz?

Alıştırma 2

Oyunobjects 'in hareketini MR uygulamanıza ekleyebilir ve Masaüstü uygulamanızda güncelleştirilmiş sahneye bakabilirsiniz misiniz?