- 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:
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ı:
Bileşenler aşağıdaki şekilde güncellendi:
Yeni:
ComponentEğer 'i genişleterek kendi temel sınıfınızı oluşturmak istiyorsanız Component, aşağıdakileri yapabilirsiniz:
Standart değişiklikler
Yeniden adlandırılan API'ler
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ı.
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:
Kategori | Tip | Özet |
Modules | Ana | Modü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. |
Component | Ana | - 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 properties | Ana | - Alan Entityveya Assettürler için nullable özelliği etkinleştirildi. |
Entity.as | Standart | Entity.as- Yöntem, null olabilen bir tür döndürecek şekilde güncellendi . |
PhysicalEntity | Standart | - Yöntem artık kuvvet yerine PhysicalEntity.applyForceAtPositiondürtüyü kullanıyor .PhysicsForceMode |
Class IDs | Standart | - Tüm dahili sınıf ID'leri türe değiştirildi bigint. |
SpawnTargetState | Standart | - Enum'un dışarı aktarılması kaldırıldı SpawnTargetState. |
LocalEvent | Standart | - Yapıcıda LocalEventparametre nameartık isteğe bağlı ve parametre belirtilmezse benzersiz bir kimlik atanıyor. |
Component | Yeniden adlandırılan API'ler | - sendNetworkEntityEventiçin sendNetworkEvent - sendEntityEventiçin sendLocalEvent - connectEntityEventiçin connectLocalEvent - connectBroadcastEventiçin connectLocalBroadcastEvent - sendBroadcastEventiçinsendLocalBroadcastEvent |
Interfaces | Yeniden adlandırılan API'ler | - IEntityStyleileEntityStyle |
Classes | Kaldırılan API'ler | - HorizonEventileLocalEvent |
Entity class | Kaldı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.
- 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 aşağıdaki şekilde güncellendi:
- Bileşenler artık komut dosyalarında oluşturulduğunda daha az kalıp kod gerektiriyor.
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;
}
}
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.
- 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üm | Eski | Yeni |
Bileşen sınıfı | sendNetworkEntityEvent | sendNetworkEvent |
sendEntityEvent | sendLocalEvent | |
connectEntityEvent | connectLocalEvent | |
connectBroadcastEvent | connectLocalBroadcastEvent | |
sendBroadcastEvent | sendLocalBroadcastEvent | |
connectNetworkEntityEvent | connectNetworkEvent | |
Arayüzler | IEntityStyle | EntityStyle |
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üm | Kaldırıldı | Alternatif | Notlar |
Sınıflar | LocalEvent | HorizonEventArtık yerel ve ağ TypeScript olaylarını destekliyoruz. ve birlikte kullanımı NetworkEventkarışıklığa neden oldu. | |
Varlık sınıfı | setVisibleToAllPlayers | setVisibilityForPlayers | Yeni API, beklenen kullanıcı davranışıyla daha uyumludur. |
Varlık sınıfı | setVisibleToPlayers | resetVisibilityForPlayers | Yeni API, beklenen kullanıcı davranışıyla daha uyumludur. |
Son düzenleme: