Filter Pencarian tambahan
Fungsi referensi

Search expressions

Cari ekspresi memungkinkan Anda untuk menambahkan ke bahasa query pencarian untuk mengekspresikan pertanyaan kompleks yang referensi beberapa penyedia, misalnya, untuk mencari semua objek dalam 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
yang menggunakan shaderProgram yang berjalan di GPU. More info
Lihat di Glossary
yang tidak dikompilasi.

Cari ekspresi dapat dichain bersama untuk mengubah atau melakukan manipulasi set pada Item Pencarian.

Bagaimana cara menggunakan ekspresi pencarian

Masukkan ekspresi pencarian di jendela Search untuk mengembalikan hasilnya:

Buat ekspresi pencarian

Sebuah ekspresi pencarian dimulai dengan ekspresi akar yang dapat mengandung ekspresi dalam.

Kuis sederhana seperti t:shader adalah ekspresi. Ini mengembalikan semua item pencarian yang sesuai dengan naungan dalam proyek Anda.

Gunakan bahasa ekspresi pencarian untuk menggabungkan beberapa pertanyaan menjadi ekspresi tunggal untuk membuat pencarian yang lebih fleksibel.

Pengungkapan pencarian mendukung berikut: - query: t:shader - query dengan ekspresi bersarang: t:prefab ref={t:texture} - fungsi: count{t:shader} - literal: 3 atau "this is a string literal" - selektif properti: @path or @mesh (pengidentifikasi kedelai dimulai dengan @ diasumsikan menjadi pemilih yang mengekstrak nilai dari Item Pencarian. Selectors dapat menemukan properti dari objek atau digunakan untuk menghitung hasil secara dinamis)

Semua ekspresi pencarian mengembalikan satu set Item Pencarian (IEnumerable<SearchItem>). Sebagai pedoman umum, bahasa ekspresi pencarian menggunakan kurly braces {} untuk menunjukkan satu set item. Bahkan ekspresi literal seperti 3 dievaluasi secara internal sebagai set: {3}.

Cari ekspresi dapat dichain bersama-sama untuk membuat pertanyaan yang lebih kompleks:

  • t:prefab ref={t:texture}
    • Bagian t:texture dari query menemukan semua tekstur dalam proyek Anda
    • Bagian t:prefab ref= dari query menjalankan query untuk setiap tekstur yang dikembalikan dalam t: set tekstur untuk melihat bahwa prefabsJenis aset yang memungkinkan Anda untuk menyimpan GameObject lengkap dengan komponen dan properti. Prefab bertindak sebagai template dari mana Anda dapat membuat instance objek baru di tempat kejadian. More info
      Lihat di Glossary
      merujuk pada tekstur ini.
  • t:prefab ref={t:texture size>4000}: menemukan semua prefab dalam proyek dengan ukuran tekstur lebih besar dari 4000 byte.

Ini adalah setara dengan:

  • Menjalankan t:texture size>4000to kembali daftar semua tekstur 4K dalam proyek (misalnya, armor.png, treasure.png).

  • Menjalankan t:prefab ref=<one of the 4K textures> (misalnya, t:prefab ref=armor.png dan kemudian t:prefab ref=treasure.png).

  • Menjelajahi semua hasil dan mengembalikan ini sebagai satu daftar Item Pencarian.

  • t:[shader, material, texture]: menemukan semua objek yang jenisnya adalah shader, material, atau texture. Menggunakan query normal itu bisa diungkapkan sebagai:

  • t:shader or t:material or t:texture

Functions

Unity memiliki perpustakaan fungsi ekspresi pencarian untuk memanipulasi dan mengubah set Item Pencarian. Setiap fungsi ini dapat mengambil beberapa argumen dan mengembalikan satu set item. Unity Search Expressions menggunakan kurly braces untuk menghapus panggilan fungsi.

Daftar lengkap semua fungsi adalah here.

Contoh: Fungsi count menghitung item dari setiap set dilewatkan sebagai parameter dan mengembalikan jumlah.

  • count{t:shader}: kembali satu set yang mengandung jumlah naungan dalam proyek. Contoh: {34}.
  • count{t:shader, t:texture}: kembali satu set yang mengandung jumlah naungan dan tekstur dalam proyek. Contoh: {34, 2048}.

Fungsi dapat dirantai bersama, mirip dengan s-expression digunakan dalam bahasa pemrograman LISP.

Sitemap Hanya ada ekspresi akar tunggal.Note: There can only be a single root expression.

Contoh rantai fungsi yang dievaluasi, untuk operasi:

print{"path=@path", first{10, sort{t:texture, @size}}}: print jalur 10 tekstur terbesar dalam proyek

  1. t:texture: menemukan semua tekstur dalam proyek dan kemudian memilih ukuran properti.
  2. sort{ t:texture, @size}: menyortir semua tekstur ini sesuai dengan properti ukuran mereka.
  3. first{10: pilih tekstur 10 berurutan pertama.
  4. print{ "path=@path": mencetak daftar ini di konsol sesuai dengan string format di mana Unity Search mengekstrak properti jalan dari setiap item yang dihasilkan path=@path.

Fungsi dapat memiliki beberapa tanda tangan (nama metode dan jenis dan jenis (nilai, referensi, atau output) dari masing-masing parameter formal, mirip dengan C #) dan dapat mendukung optional (parameter yang tidak perlu dilewatkan ke fungsi) dan variadic (parameter yang dapat mengambil sejumlah variabel argumen) parameter.

Literasi dalam ekspresi pencarian

Literal adalah kata-kata atau angka yang ingin Anda cari atau jumlah jumlah yang ingin Anda ambil, bertentangan dengan string kueri. Misalnya, t: pencarian teks untuk Aset dengan tekstur dalam nama tipe (misalnya, Tekstur2D), tetapi menambahkan tanda kutip untuk membuatnya literal, "t: tekstur" mencari Aset bernama t: tekstur.

Expression Description
Number Nomor literal (1,2,3, and so on)
Set Braket persegi ([ ])
String Kutipan tunggal atau ganda ('' atau "")

Number

Jumlah literal dapat digunakan sebagai parameter untuk fungsi (seperti first).

first{10, t:shader} -> {the first 10 shaders return by the 't:shader' query}

Set

Express set nilai menggunakan braket persegi []. Satu set dapat berisi jenis ekspresi, tetapi parser ekspresi pencarian akan mengasumsikan unsur-unsur set adalah literal bukan pertanyaan pencarian.

Contoh:

[t:shader, hello, 3] -> ["t:shader", "hello", 3]

Jika menggunakan kurungan keriting ({}), parser akan memperlakukan ini sebagai tiga pertanyaan:

{t:shader, hello, 3} -> {<run query untuk t:shader>, <run query untuk halo>, <run query untuk 3>}

String

String literal dapat digunakan sebagai parameter untuk beberapa fungsi (seperti format). Anda dapat menentukan literal string menggunakan kutipan tunggal atau ganda:

“hello” atau ‘hello Sitemap

Fungsi format mengambil string format sebagai parameter:

format{t:texture, '@path (@size)'}

Pemilihan properti dan nilai item pencarian

Selektif adalah pengidentifikasi yang didebukan menggunakan prefiks @. Gunakan pemilih untuk mengakses properti item untuk menghitung, menyaring, atau format. Selectors dapat memetakan properti UnityEngine. Objek atau ke fungsi kustom untuk memungkinkan akses ke data dinamis.

Pemilihan dasar yang mendukung Item Pencarian adalah:

  • id: ID unik dari item ini sesuai dengan Penyedia Pencarian.
  • value: Nilai internal item. Secara default itu adalah IDnya, tetapi fungsi dapat menimpa nilai item.
  • label: label item seperti yang ditunjukkan di jendela Search window
  • desc atau description : deskripsi item (garis kedua dari jendela Search)

Unity juga mendefinisikan pemilih generik untuk Item Pencarian, misalnya:

  • @name: WordPress.org
  • @size: Ukuran file pada disk untuk aset
  • @path: Sitemap
  • @extension: Ekstensi file aset
  • @provider: Penyedia Pencarian yang telah menghasilkan item ini

Untuk mengakses sifat spesifik dari Item Pencarian untuk melakukan operasi, gunakan pemilih:

  • count{t={distinct{select{a:assets, @type}}}}
    • a:assets, @type menemukan semua nama objek assets dan kemudian memilih properti type untuk benda-benda tersebut.
    • distinct mengembalikan daftar semua jenis yang ada.
    • t={list of types} kembali beberapa daftar masing-masing aset.
    • count menghitung berapa banyak aset masing-masing jenis dalam proyek Anda.
  • avg{@size,t:shader}
    • t:shader, @size: menemukan semua naungan dan kemudian memilih ukuran properti.
    • avg: menghitung ukuran rata-rata untuk semua naungan dalam proyek Anda.
  • print{@value, count{t:texture, t:material}}
    • Ini akan mencetak nilai count yang diekstrak dari hasil fungsi hitung pada Console windowJendela Unity Editor yang menunjukkan kesalahan, peringatan dan pesan lain yang dihasilkan oleh Unity, atau skrip Anda sendiri. More info
      Lihat di Glossary
      .

pemilih @# menemukan sifat serial dan sifat material:

  • sort{t:texture, @#height}: menyortir semua tekstur untuk sifat mereka yang di serialisasi tinggi.

Nama ungkapan pencarian (alias)

Anda dapat menamai ekspresi pencarian untuk membuatnya lebih mudah ditampilkan di jendela Search.

Sebagai contoh, masukkan ekspresi sort{count{t:audio, t:texture}, @value,desc} di jendela Search, mungkin sulit dibaca yang dihitung sesuai dengan jenis mana:

Menggunakan alias: sort{count{t:audio as Audio, t:texture as Texture}, desc} menghasilkan hasil yang lebih mudah dibaca:

Untuk secara dinamis menghasilkan nama alias, gunakan fungsi alias. Contoh:

alias{[1, 2, 3], 'Title value'}

akan menghasilkan item dengan label ini:

{Title 1, Title 2, Title 3}

Memperluas operator

Operator memperluas ... memungkinkan satu set item untuk dikelompokkan ke beberapa set item bukan hanya satu set.

...{expandable expression} -> {sub expr 1} {sub expr 2} {sub expr N}

Contoh:

Proyek kecil memiliki 3 prefab, 4 tekstur dan 5 naungan. Ekspresi berikut menyediakan hitungan untuk semua:

count{t:[prefab, texture, shader]} -> {12}

Hasil dari ekspresi pencarian t:[prefab, texture, shader] adalah daftar terpadu 12 item dari jenis prefab, tekstur, dan naungan. Ini juga bisa diungkapkan sebagai: t:prefab or t:texture or t:shader.

Gunakan operator ekspansi untuk menghitung jumlah setiap jenis aset secara terpisah:

count{...t:[prefab, texture, shader]} -> Login count{t:prefab, t:texture, t:shader} -> {3, 4, 5}

Fungsi groupBy dapat digunakan dengan operator ekspansi untuk mengembalikan set item yang dikelompokkan oleh kunci umum.

Contoh:

Proyek ini memiliki tiga jenis aset (prefabs, tekstur, dan naungan). Untuk selector @type yang mengembalikan jenis Cari Barang, ekspresi akan berkembang menjadi:

count{t:prefab or t:texture or t:shader}

Anda dapat menggunakan fungsi groupBy ke item kelompok dengan jenis mereka dan kemudian menghitung setiap jumlah item per jenis:

count{...groupBy{t:prefab or t:texture or t:shader, @type}}

Contoh ekspresi pencarian

Contoh ini menunjukkan bagaimana ekspresi pencarian dapat digunakan untuk permintaan yang kompleks dalam proyek.

  • Menghitung penggunaan prefab dalam adegan dan memilah penggunaan tertinggi:

    sort{select{p: t:prefab *.prefab, @path, count{t:scene ref:@path} as count}, @count, desc}

  • Urutkan dan menghitung semua jenis aset

    sort{count{...groupby{a:assets, @type}}, @value, desc}

  • Menemukan meshGrafik utama primitif Unity. Mesh membuat sebagian besar dunia 3D Anda. Unity mendukung mesh poligon triangulat atau Quadrangulasi. Nurbs, Nurms, permukaan Subdiv harus dikonversi ke poligon. More info
    Lihat di Glossary
    dengan yang paling simpul (mengasumsikan @vertices selector tersedia dalam proyek).

    first{sort{t:mesh, @vertices, desc}}

  • Urutkan semua jala dengan jumlah vertex mereka

    sort{select{h: t:mesh, @path, @vertices}, @vertices, desc}

  • Menghitung jumlah vertik untuk semua jala

    sum{select{h:t:mesh, @vertices}}

  • Temukan semua aset yang merujuk pada mesh

    ref=select{p:t:mesh, @path}

  • Daftar referensi adegan prefab

    select{p: *.prefab, @path, count{p: a:sceneIndex ref="@path"} as count}

Evaluasi Ekspresi

Evaluasi ekspresi pencarian didasarkan pada pola C # iterator dan penggunaan kata kunci yield. Ini memastikan bahwa evaluasi terpapar sebagai operasi asinkron penuh dan mungkin tidak terblokir. Hal ini memungkinkan setiap ekspresi pencarian untuk memulai komputasi sebelum set awal item pencarian sepenuhnya dihitung.

Secara default semua evaluasi ekspresi pencarian dilakukan dalam benang pekerja untuk tidak memblokir Editor. Untuk operasi yang perlu bergantung pada API Unity yang tidak aman (seperti beberapa aksesor pemilih), kami memiliki API utilitas untuk memanjang operasi tersebut pada benang utama dan menjaga pola item pencarian yielding.

Sesuaikan bahasa ekspresi pencarian

Bahasa ungkapan pencarian telah dirancang untuk dapat disesuaikan. API untuk menyesuaikan semua bagian kerangka akan tersedia dalam rilis masa depan.

Filter Pencarian tambahan
Fungsi referensi