Ubah kostum pemain lokal
Anda dapat mengubah kostum pemain lokal ke kostum yang Anda miliki.
ZEPETO.Character.Controller versi 1.11.3 atau yang lebih tinggi harus diinstal.
Menggunakan API SetCostume
Metode
API | Deskripsi |
|---|---|
SetCostume($itemCode: string, $complete?: System.Action):void; | Masukkan kode item (id item) sebagai nilai argumen untuk mengubah kostum pemain lokal. Terima callback setelah perubahan kostum selesai. |
Contoh perubahan kostum pemain lokal
Anda dapat mengubah kostum pemain lokal menggunakan SetCostume().
Berikut adalah contoh kode yang membuat pemain lokal saat adegan dimulai, dan mengubah kostum dengan kode item tertentu ketika pemain lokal dibuat.
1) Tambahkan ZEPETO > Typescript dan beri nama skrip ChangeLocalPlayerCostume.
Tulis skrip contoh seperti di bawah ini.
import { SpawnInfo, ZepetoPlayers } from 'ZEPETO.Character.Controller';
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { WorldService } from 'ZEPETO.World';
export default class ChangeLocalPlayerCostume extends ZepetoScriptBehaviour {
public itemCode: string;
// Ketika adegan dimulai, buat pemain dengan ID pengguna yang diberikan dan ubah kostumnya.
Start() {
// Buat pemain baru dengan ID pengguna yang ditentukan.
ZepetoPlayers.instance.CreatePlayerWithUserId(WorldService.userId, new SpawnInfo(), true);
// Tambahkan pendengar ke acara OnAddedLocalPlayer, yang dipicu ketika pemain lokal ditambahkan.
ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
// Panggil metode ChangeCostume dengan kode item yang diberikan untuk mengubah kostum.
this.ChangeCostume(this.itemCode);
});
}
// Metode untuk mengubah kostum pemain lokal menggunakan kode item yang diberikan.
ChangeCostume(itemCode: string) {
// Gunakan properti LocalPlayer untuk mengakses instance pemain lokal dan mengatur kostumnya menggunakan kode item yang diberikan.
ZepetoPlayers.instance.LocalPlayer.SetCostume(itemCode, () => {
// Setelah perubahan kostum selesai, catat pesan yang menunjukkan perubahan berhasil.
console.log(`Set Costume Complete : ${itemCode}`);
});
}
}deskripsi skrip
- Skrip ini mengubah pakaian pemain lokal sesuai dengan kode item yang diberikan.
- Ketika adegan dimulai, buat pemain dengan ID pengguna yang ditentukan dan gunakan CreatePlayerWithUserId() fungsi.
- Listener acara OnAddedLocalPlayer ditambahkan sehingga ketika pemain lokal ditambahkan, acara tersebut dipicu, dan ChangeCostume() metode dipanggil untuk mengubah kostum.
- Akses instance pemain lokal melalui properti LocalPlayer dan ubah kostum menggunakan kode item yang diberikan. Setelah perubahan kostum selesai, sebuah Set Costume Complete pesan akan dicatat, menunjukkan perubahan yang berhasil.
📘 Silakan merujuk ke panduan manekin tentang cara memeriksa ID item. [[err] ZEPETO Mannequin]
2) Jika Anda menekan tombol [▶︎(putar)] untuk menjalankannya, Anda dapat melihat bahwa pemain lokal dibuat dan diubah dengan kostum berdasarkan kode item yang dimasukkan.

Sebelum perubahan kostum (kiri), setelah perubahan kostum (kanan)
- Jika item adalah produk jangka tetap, itu akan dikenakan setelah memeriksa apakah sudah kedaluwarsa. Untuk item yang sudah kedaluwarsa, log kesalahan yang disebut Item Kedaluwarsa disebut.
- Jika item adalah produk yang dibayar Zem, itu akan dikenakan setelah memeriksa apakah dimiliki oleh pemain lokal. Untuk item yang tidak dimiliki, log kesalahan yang disebut Tidak Memiliki ItemCode disebut.
Contoh Memuat Daftar Item dan Mengganti Pakaian.
Anda dapat mengambil daftar item pakaian dengan memanfaatkan GetMyItemListAsync(), yang memberikan informasi tentang item yang dimiliki oleh pengguna.
Contoh berikut menunjukkan bagaimana menampilkan pakaian yang dimiliki oleh pemain lokal di layar dan memungkinkan mereka untuk memilih dan mengganti pakaian.
LANGKAH 1. Buat UI daftar pakaian
Pertama, buat sumber daya daftar UI di mana thumbnail dan nama daftar pakaian akan ditampilkan. Sumber daya yang perlu dibuat termasuk:
LANGKAH 1-1. Buat Prefab Item
Setelah memuat daftar pakaian yang dimiliki pemain lokal, kita membuat daftar item di UI. Prefab Item berfungsi sebagai sumber untuk setiap daftar item yang dibuat.
Saat Prefab Item dibuat, thumbnail dan nama item ditampilkan di UI.
Prefab item berisi elemen-elemen berikut.
- Objek Button_thumbnail: Ini adalah objek di mana komponen Raw Image dan komponen Button terdaftar untuk menampilkan gambar thumbnail item.
- Objek Text_name: Sebuah objek komponen Text di mana nama item akan ditampilkan.

LANGKAH 1-2. Menyiapkan Kanvas
Kanvas adalah layar UI yang ditampilkan saat Prefab Item dibuat. Disarankan untuk membuat Scroll View di dalam Kanvas ini agar daftar item yang besar dapat diambil.
Objek Scroll View di dalam Kanvas diatur sebagai berikut.
- Objek Scroll View diatur untuk hanya mengizinkan scrolling vertikal.
- Objek Konten mengatur komponen berikut:
- Grup Tata Letak Grid:
- Ukuran Sel : x: 150, Y: 150
- Keterbatasan : Jumlah Kolom Tetap
- Jumlah Keterbatasan : 5

LANGKAH 2. Skrip untuk memuat daftar item dan mengubah pakaian
LANGKAH 2-1. Tulis skrip
- Tambahkan ZEPETO > Typescript dan ganti nama skrip menjadi MyItemList.
- Tulis skrip contoh seperti di bawah ini.
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { ShopService, ItemKeyword } from 'ZEPETO.Module.Shop';
import { ZepetoPropertyFlag } from 'Zepeto';
import { GameObject, Object, RectTransform, Texture2D, Transform, WaitUntil } from 'UnityEngine';
import { Button, LayoutRebuilder, RawImage, Text } from 'UnityEngine.UI';
import { SpawnInfo, ZepetoPlayers } from 'ZEPETO.Character.Controller';
import { WorldService } from 'ZEPETO.World';
import { Item } from 'ZEPETO.Module.Content';
export default class CheckMyItemList extends ZepetoScriptBehaviour {
public itemPrefab: GameObject;
public itemCanvas: Transform;
// Ketika adegan dimulai, buat pemain dengan ID pengguna yang diberikan dan mulai mengambil serta menampilkan item.
Start() {
// Buat pemain baru dengan ID pengguna yang ditentukan.
ZepetoPlayers.instance.CreatePlayerWithUserId(WorldService.userId, new SpawnInfo(), true);
// Tambahkan pendengar ke acara OnAddedLocalPlayer, yang dipicu ketika pemain lokal ditambahkan.
ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
// Mulai coroutine CoGetMyItem untuk mengambil dan menampilkan item.
this.StartCoroutine(this.CoGetMyItem());
});
}
// Coroutine untuk mengambil dan menampilkan item.
*CoGetMyItem() {
// Minta daftar item dengan kata kunci "semua" dan tanpa filter.
var requestItemList = ShopService.GetMyContentItemListAsync(ItemKeyword.all, null);
// Tunggu hingga permintaan selesai.
yield new WaitUntil(() => requestItemList.keepWaiting == false);
if (requestItemList.responseData.isSuccess) {
let contentItems: Item[] = requestItemList.responseData.items;
console.log(contentItems.length);
for (let i = 0; i < contentItems.length; ++i) {
const property: ZepetoPropertyFlag = contentItems[i].property;
// Minta tekstur thumbnail untuk item.
var textureReq = contentItems[i].GetThumbnailAsync();
yield new WaitUntil(() => textureReq.keepWaiting == false);
let thumbnailTexture: Texture2D = textureReq.responseData.texture;
// Buat prefab item dan atur propertinya.
const item = Object.Instantiate(this.itemPrefab, this.itemCanvas) as GameObject;
item.GetComponentInChildren<RawImage>().texture = thumbnailTexture;
item.GetComponentInChildren<Text>().text = contentItems[i].id;
// Tambahkan pendengar klik ke tombol item untuk mengubah kostum saat diklik.
item.GetComponentInChildren<Button>().onClick.AddListener(() => {
this.SetItemButton(contentItems[i].id);
});
}
}
// Paksa pembangunan ulang tata letak untuk memastikan posisi elemen UI yang tepat.
const rect = this.itemCanvas.gameObject.GetComponent<RectTransform>();
LayoutRebuilder.ForceRebuildLayoutImmediate(rect);
}
// Metode untuk mengubah kostum pemain lokal berdasarkan kode item yang diberikan.
SetItemButton(itemCode: string) {
// Gunakan properti ZepetoPlayers.instance.LocalPlayer untuk mengakses instance pemain lokal dan mengubah kostumnya.
ZepetoPlayers.instance.LocalPlayer.SetCostume(itemCode, () => {
// Setelah perubahan kostum selesai, catat pesan yang menunjukkan perubahan berhasil.
console.log(`Set Kostum Selesai : ${itemCode}`);
});
}
}deskripsi skrip
- Dalam metode Start, pemain baru dibuat menggunakan ZepetoPlayers.instance.CreatePlayerWithUserId() dan CoGetMyItem() coroutine dieksekusi ketika pemain lokal ditambahkan.
- Coroutine CoGetMyItem() menggunakan ShopService.GetMyContentItemListAsync() untuk mengambil daftar item yang dimiliki oleh pemain.
- Minta daftar semua item di semua kategori melalui ItemKeyword.all. Tunggu hingga permintaan selesai menggunakan yield new WaitUntil(() => requestItemList.keepWaiting == false).
- Jika permintaan berhasil requestItemList.responseData.isSuccess, iterasi melalui daftar contentItems dan ambil gambar thumbnail setiap item menggunakan GetThumbnailAsync().
- Buat elemen UI untuk setiap item menggunakan itemPrefab yang disediakan, dan atur gambar thumbnail dan ID. Sebuah tombol untuk setiap item dibuat, dan diatur untuk memanggil SetItemButton() dengan ID item sebagai argumen.
- Metode SetItemButton() dipanggil ketika tombol yang terkait dengan item diklik.
- Terapkan item yang dipilih sebagai kostum karakter pemain menggunakan ZepetoPlayers.instance.LocalPlayer.SetCostume().
- Ketika kostum berhasil diubah, pesan log yang mengatakan Set Costume Complete ditampilkan bersama dengan kode item.
📘 Tips
- Silakan merujuk ke panduan berikut tentang cara memeriksa informasi item pengguna melalui ShopService.GetMyContentItemListAsync(). [Dapatkan informasi tentang barang yang dimiliki oleh pengguna]
- Saat mencari item yang dimiliki oleh pengguna, Anda dapat mencari berdasarkan kategori menggunakan ItemKeyword dan menampilkannya dalam daftar di UI.
❗️ Peringatan Daftar pakaian yang diambil melalui ShopService.GetMyContentItemListAsync() berisi produk terbatas waktu yang sudah kedaluwarsa. Jadi Item kedaluwarsa log kesalahan dapat dipanggil.
LANGKAH 2-2. Mengatur inspektor MyItemList
Daftarkan itemPrefab yang dibuat di langkah 1 di Item Prefab dari komponen yang diterapkan MyItemList, dan daftarkan Canvas di itemCanvas.

LANGKAH 3. Jalankan
Jika Anda menekan tombol Putar untuk menjalankannya, antarmuka kanvas akan menampilkan daftar item yang dimiliki oleh pemain lokal, dan Anda dapat melihat bahwa item berubah menjadi kostum yang sesuai saat dipilih.

❗️ Peringatan
- API kostum ini hanya berlaku untuk pemain lokal dan saat ini tidak mendukung sinkronisasi multiplayer.
- Sinkronisasi kostum multiplayer akan tersedia di masa depan.