Horizon TypeScript V2 Değişiklikleri

Horizon Words şuan Türkiye için kapalı. VPN kullanarak giriş yapabilirsiniz. VPN ile Giriş Rehberi için TIKLAYIN

Finrold

İçerik Üreticisi
Kayıtlı Kullanıcı
XR Başlığı
Quest 3
Tüm yeni dünyalar varsayılan olarak TypeScript API V2'yi kullanır. Önceki sürümler artık güncellenmediğinden dünyalarınızı bu API sürümüne yükseltmenizi şiddetle öneririz.

Bu makalede, son API değişiklikleri ve mevcut API sürümüyle uyumluluğu sağlamak için betiklerinizde yapmanız gerekebilecek bazı güncellemeler açıklanmaktadır.

Mevcut API'ler hakkında ayrıntılı bilgi için API başvuru belgelerine bakın.

Özet

Bu tablo son değişiklikleri özetlemektedir:

KategoriTipÖzet
ModulesAnaModül adları aşağıdaki şekilde değiştirildi:
- Modül adları için önek 'den 'e değiştirildi @early_access_api. horizon-
Çekirdek API'leri için modül adı 'den v1'e değiştirildi core.
ComponentAna- Komut dosyalarında bileşen oluşturmak için gereken kalıp kod miktarı azaltıldı. - Sınıfa bir yöntem
eklendi .prestartComponent
Entity and Asset propertiesAna- Alan Entityveya Assettürler için nullable özelliği etkinleştirildi.
Entity.asStandartEntity.as- Yöntem, null olabilen bir tür döndürecek şekilde güncellendi .
PhysicalEntityStandart- Yöntem artık kuvvet yerine PhysicalEntity.applyForceAtPositiondürtüyü kullanıyor .PhysicsForceMode
Class IDsStandart- Tüm dahili sınıf ID'leri türe değiştirildi bigint.
SpawnTargetStateStandart- Enum'un dışarı aktarılması kaldırıldı SpawnTargetState.
LocalEventStandart- Yapıcıda LocalEventparametre nameartık isteğe bağlı ve parametre belirtilmezse benzersiz bir kimlik atanıyor.
ComponentYeniden adlandırılan API'ler- sendNetworkEntityEventiçin sendNetworkEvent
- sendEntityEventiçin sendLocalEvent
- connectEntityEventiçin connectLocalEvent
- connectBroadcastEventiçin connectLocalBroadcastEvent
- sendBroadcastEventiçinsendLocalBroadcastEvent
InterfacesYeniden adlandırılan API'ler- IEntityStyleileEntityStyle
ClassesKaldırılan API'ler- HorizonEventileLocalEvent
Entity classKaldırılan API'ler- - setVisibleToAllPlayers- setVisibilityForPlayers
- setVisibleToPlayers-resetVisibilityForPlayers

Büyük değişiklikler

Bu bölümde, en geniş yelpazedeki komut dosyalarını etkileme olasılığı en yüksek olan en etkili değişiklikler açıklanmaktadır.

Modül adları

API'ler için modül adları aşağıdaki şekilde yeniden adlandırıldı:
  • Önek @early_access_apiolarak değiştirildi horizon.
  • Çekirdek API'ler için modül adı 'den v1'e değiştirildi core.
Bu değişiklikler nedeniyle, API'lerin önceki sürümlerini içe aktaran tüm betiklerde bu içe aktarma ifadelerini güncellemelisiniz. Örneğin:
  • Temel API'ler:
    • Eskimiş:import * as hz from “@early_access_api/v1”;
    • Yeni:import * as hz from “horizon/core”;
    • Eskimiş:import * as hz from “@early_access_api/navmesh”;
    • Yeni:import * as hz from “horizon/navmesh”;
Bileşenler

Bileşenler aşağıdaki şekilde güncellendi:
  • Bileşenler artık komut dosyalarında oluşturulduğunda daha az kalıp kod gerektiriyor.
Eski:
Kod:
type TestProps = {
  num: number;
  numDefaulted: number
};

class TestClass extends Component<TestProps> {
  static propsDefinition = {
    num: {type: 'number'},
    numDefaulted: {type: 'number', default: 0},
  };

  start(): void {
    const n: number \| undefined = this.props.num;
    const numDefaulted: number \| undefined = this.props.numDefaulted;
  }
}

Yeni:
Kod:
class TestClass extends Component<typeof TestClass> {
  static propsDefinition = {
    num: {type: 'number'},
    numDefaulted: {type: 'number', default: 10},
    entity: {type: PropTypes.Entity}
  };

  start(): void {
    const n: number = this.props.num;
    const entity: Entity \| undefined = this.props.entity;
  }
}
ComponentEğer 'i genişleterek kendi temel sınıfınızı oluşturmak istiyorsanız Component, aşağıdakileri yapabilirsiniz:
Kod:
class Foo<T> extends Component<typeof Foo & T> {
  ...
}

class Bar extends Foo<typeof Bar>
static propsDefinition = {
  ...Foo.propsDefinition,
  // new props
}

  • Sınıfın Componentartık dünyadaki herhangi bir bileşende çağrılmadan prestartönce bileşenleri kurmak için kullanabileceğiniz bir yöntemi var start Örneğin, olay dinleyicilerini kurarken bunu yapmak isteyebilirsiniz.
Varlık ve tüzel kişilik özellikleri
  • Entityveya türlerini alan özellikler Assetartık nullable özelliğine sahiptir. Sonuç olarak, kodunuzda kullanmadan önce null olup olmadıklarını kontrol etmelisiniz. Daha önce bu genellikle 'ı çağırarak gerçekleştiriliyordu Entity.exists(). Şimdi, aşağıdakileri yaparak null değerleri kontrol edebilirsiniz:
Kod:
 start(): void {
  const exampleEntity: Entity \| undefined = this.props.entityProp;
  const exampleAsset: Asset \| undefined = this.props.assetProp;
 
  if (exampleEntity != null) {
    // Use as before
  }
}

Standart değişiklikler
  • Yöntem Entity.asartık null olabilen bir tür döndürüyor.
  • Yöntem artık kuvvet yerine PhysicalEntity.applyForceAtPositiondürtüyü kullanıyor .PhysicsForceMode
  • bigintTüm dahili sınıf kimlikleri, betiklerin ağ genelinde varlıkları serileştirmesine olanak tanıyan türe değiştirildi .
  • Enum'un dışa aktarımı SpawnTargetStatekaldırıldı.
  • Yapıcıda LocalEvent, nameparametre artık isteğe bağlıdır ve parametre belirtilmezse benzersiz bir kimlik atanır.
  • Güncellenmiş yanıt türü. Artık erişmeden önce RaycastHitkontrol etmelisiniz ..targetType.target
Kod:
const hit = this._raycaster.raycast(
  this._raycaster.position.get(),
  this._raycaster.forward.get(),
  {
    layerType: hz.LayerType.Objects,
    maxDistance: this.props.maxGrabDistance
  });

if (hit && hit.targetType == hz.RaycastTargetType.Entity) {
  const entity = hit.target;
  entity.color.set(hz.Color.green)
  // do something
}

Yeniden adlandırılan API'ler

BölümEskiYeni
Bileşen sınıfısendNetworkEntityEventsendNetworkEvent
sendEntityEventsendLocalEvent
connectEntityEventconnectLocalEvent
connectBroadcastEventconnectLocalBroadcastEvent
sendBroadcastEventsendLocalBroadcastEvent
connectNetworkEntityEventconnectNetworkEvent
ArayüzlerIEntityStyleEntityStyle


Kaldırılan API'ler

Aşağıdaki API'ler daha önce kullanımdan kaldırılmıştı ve artık V2'de kaldırıldı.

BölümKaldırıldıAlternatifNotlar
SınıflarLocalEventHorizonEventArtık yerel ve ağ TypeScript olaylarını destekliyoruz. ve birlikte kullanımı NetworkEventkarışıklığa neden oldu.
Varlık sınıfısetVisibleToAllPlayerssetVisibilityForPlayersYeni API, beklenen kullanıcı davranışıyla daha uyumludur.
Varlık sınıfısetVisibleToPlayersresetVisibilityForPlayersYeni API, beklenen kullanıcı davranışıyla daha uyumludur.
 
Son düzenleme:
Merhaba arkadaşlar,

TypeScript API V2 güncellemesiyle ilgili açıklamalar için teşekkürler. Modül ve bileşen güncellemeleri başta olmak üzere değişiklikleri dikkatlice inceleyin.

Özellikle `Entity` ve `Asset` tiplerinin artık null olabildiğini ve buna göre kodlarınızı güncellemeniz gerektiğini unutmayın. Belgelerdeki örnek kodlar, geçişi kolaylaştırmanıza yardımcı olacaktır.
 

Yeni Eklenen Oyunlar

Sitemiz bir forum sitesi olduğu için kullanıcılar her türlü görüşlerini önceden onay olmadan anında siteye yazabilmektedir. 5651 sayılı yasaya göre bu yazılardan dolayı doğabilecek her türlü sorumluluk yazan kullanıcılara aittir. 5651 sayılı yasaya göre sitemiz mesajları kontrolle yükümlü olmayıp, yasaya aykırı yada telif hakkı içeren paylaşımlar BURADAN bize ulaşıldığı taktirde, ilgili konu en geç 48 saat içerisinde kaldırılacaktır. Sitemizde Bulunan Videolar YouTube, Facebook, Dailymotion, v.b. video paylaşım sitelerinden alınmaktadır. Telif hakları sorumluluğu bu sitelere aittir. Videoların hiç biri sunucularımızda bulunmamaktadır.
Geri
Üst