Untuk menampilkan metrik kustom di Unity profilerJendela yang membantu Anda untuk mengoptimalkan permainan Anda. Ini menunjukkan berapa banyak waktu yang dihabiskan di berbagai bidang permainan Anda. Sebagai contoh, dapat melaporkan persentase waktu yang dihabiskan rendering, aimating, atau dalam logika permainan Anda. More info
Lihat di Glossary, Anda harus menggunakan API ProfileerCounter dalam paket.
Anda dapat menggunakan Profiling Core API untuk melacak metrik dalam aplikasi Anda. Anda dapat menampilkan informasi yang dilacak di Unity Profileer. Gunakan custom Profiler countersDitempatkan dalam kode dengan ProfilerCounter API untuk melacak metrik, seperti jumlah musuh yang ditidur dalam permainan Anda.
Lihat di Glossary untuk membandingkan metrik sistem dan mengidentifikasi masalah kinerja di jendela Profiler.
Counter Profiler kustom dapat menampilkan data dari ProfilerCounter
atau ProfilerCounterValue
.
Untuk panduan lengkap untuk menggunakan API Inti Profiling Unity untuk membuat counter Profiler, lihat .
Untuk menambahkan counter profiler, buat scriptsSepotong kode yang memungkinkan Anda untuk membuat Komponen Anda sendiri, memicu peristiwa permainan, memodifikasi sifat komponen dari waktu ke waktu dan menanggapi input pengguna dengan cara apa pun yang Anda sukai. More info
Lihat di Glossary untuk melakukan berikut:
Contoh kode di bagian ini menambahkan penghitung Profiler untuk melacak jumlah total partikel yang dibuat Unit untuk setiap kasus efek jejak GameObjectObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info
Lihat di Glossary. Dalam contoh ini, nama GameObject adalah "Tank".
Untuk membuat counter baru, tulis skrip untuk menentukan jenis nilai counter baru, dan menetapkan nama dan unit ke jenis ini.
Ketika Anda membuat counter Anda harus menentukan mana Profiler counter baru Anda milik. Untuk melakukan ini menggunakan kategori Unity yang ada. Misalnya, contoh script di bawah ini menggunakan kategori ProfilerCategory.Scripts
yang ada. Untuk informasi lebih lanjut, lihat Menggunakan kategori Profiler
Script contoh berikut mendefinisikan TankTrailParticleCount
, dengan nama "Tank Trail Partikel". Counter ini memiliki unit “Count”:
public static class GameStats
{
public static readonly ProfilerCategory TanksCategory = ProfilerCategory.Scripts;
public const string TankTrailParticleCountName = "Tank Trail Particles";
public static readonly ProfilerCounterValue<int> TankTrailParticleCount =
new ProfilerCounterValue<int>(TanksCategory, TankTrailParticleCountName, ProfilerMarkerDataUnit.Count,
ProfilerCounterOptions.FlushOnEndOfFrame | ProfilerCounterOptions.ResetToZeroOnFlush);
}
Opsi FlushOnEndOfFrame
dan ResetToZeroOnFlush
secara otomatis mengirimkan counter ke aliran data Profiler dan mengatur ulang nilai Count ke nol pada akhir bingkai.
Unity secara otomatis kelompok Profiler counter ke dalam kategori berdasarkan jenis pekerjaan profil counter, misalnya, rendering, Scripting, atau Animasi. Anda dapat menetapkan penghitung Profiler kustom untuk setiap kategori profil Unity. Untuk daftar lengkap kategori Profiler yang tersedia, lihat ProfilerCategory.
Counter Profiler harus milik kategori Profiler. Anda harus menetapkan kategori ke counter Profiler ketika Anda mendefinisikan counter. Untuk melakukan ini, gunakan argumen konstruktor ProfilerModule opsional autoEnabledCategoryNames
untuk menetapkan satu atau lebih kategori ke counter Profiler. Ada contoh metode ini dalam kode contoh berikut:
using Unity.Profiling;
using Unity.Profiling.Editor;
[System.Serializable]
[ProfilerModuleMetadata("Tank Effects")]
public class TankEffectsProfilerModule : ProfilerModule
{
static readonly ProfilerCounterDescriptor[] k_Counters = new ProfilerCounterDescriptor[]
{
new ProfilerCounterDescriptor(GameStatistics.TankTrailParticleCountName, GameStatistics.TanksCategory),
new ProfilerCounterDescriptor(GameStatistics.ShellExplosionParticleCountName, GameStatistics.TanksCategory),
new ProfilerCounterDescriptor(GameStatistics.TankExplosionParticleCountName, GameStatistics.TanksCategory),
};
// Ensure that both ProfilerCategory.Scripts and ProfilerCategory.Memory categories are enabled when our module is active.
static readonly string[] k_AutoEnabledCategoryNames = new string[]
{
ProfilerCategory.Scripts.Name,
ProfilerCategory.Memory.Name
};
// Pass the auto-enabled category names to the base constructor.
public TankEffectsProfilerModule() : base(k_Counters, autoEnabledCategoryNames: k_AutoEnabledCategoryNames) { }
}
Untuk memperbarui nilai penghitung, buat skrip MonoBehaviour yang menetapkan nilai penghitung yang telah ditentukan. Untuk informasi lebih lanjut, lihat .
Contoh ini MonoBehaviour script menghitung jumlah partikel jejak yang milik GameObject yang ditugaskan setiap bingkai dalam fungsi Update. Untuk melakukan ini, ia menggunakan counter yang disebut TankTrailParticleCount
.
Script contoh berikut juga menciptakan properti publik yang disebut Trail Particle SystemA component that simulates fluid entities such as liquids, clouds and flames by generating and animating large numbers of small 2D images in the scene. More info
See in Glossary (m_TrailParticleSystem
) di InspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
Lihat di Glossary:
using UnityEngine;
class TankMovement : MonoBehaviour
{
public ParticleSystem m_TrailParticleSystem;
void Update()
{
GameStats.TankTrailParticleCount.Value += m_TrailParticleSystem.particleCount;
}
}
Ketika Anda menjalankan proyek Anda di pemain rilis, Anda tidak memiliki akses ke jendela Profiler. Namun, Anda dapat menampilkan counter sebagai elemen UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
Lihat di Glossary dalam pemain rilis. Ini berarti Anda dapat menyertakan alat profil dalam aplikasi yang dirilis. Untuk melakukan ini, lihat Getting counter values in players di .
Gambar berikut menampilkan counter di kiri atas sceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary menggunakan UI kustom di pemain rilis: