Aset Metadata
Refreshing the Asset Database

The Asset Database

Dengan sebagian besar jenis aset, Unity perlu mengonversi data dari file sumber aset menjadi format yang dapat digunakan dalam aplikasi game atau waktu nyata. Ini menyimpan file yang dikonversi ini, dan data yang terkait dengan mereka, di Asset Database.

Proses konversi diperlukan karena sebagian besar format file dioptimalkan untuk menghemat ruang penyimpanan, sedangkan dalam permainan atau aplikasi real-time, data aset perlu dalam format yang siap untuk perangkat keras, seperti CPU, grafis, atau perangkat keras audio, untuk segera digunakan. Misalnya, ketika Unity mengimpor file gambar .png sebagai tekstur, itu tidak menggunakan data .png-format asli pada runtime. Alih-alih, ketika Anda mengimpor tekstur, Unity menciptakan representasi baru dari gambar dalam format yang berbeda yang disimpan dalam folder Library Proyek. Kelas Tekstur di mesin Unity menggunakan versi impor ini, dan Unity mengunggahnya ke GPU untuk tampilan real-time.

Jika Anda kemudian memodifikasi file sumber aset yang telah Anda impor (atau jika Anda mengubah ketergantungan) Unity mengubah file dan memperbarui versi data yang diimpor. Lihat Refreshing the Asset Database untuk informasi lebih lanjut tentang proses ini.

Aset Database juga menyediakan API documentation yang dapat Anda gunakan untuk mengakses Aset, dan mengontrol atau menyesuaikan proses impor.

Ketergantungan impor aset

Aset Database melacak semua dependencies untuk setiap aset, dan menyimpan cache versi impor dari semua Aset.

Ketergantungan impor aset terdiri dari semua data yang mungkin mempengaruhi data impor. Misalnya, file sumber aset adalah ketergantungan, serta pengaturan impor aset (seperti tipe kompresi tekstur), atau platform target Proyek Anda (misalnya, perangkat keras PS4 memerlukan data dalam format yang berbeda ke perangkat keras Android). Jika Anda memodifikasi ketergantungan ini, versi cache dari Aset impor menjadi tidak valid dan Unity harus menggantinya untuk mencerminkan perubahan.

Asset caching

Cache Aset adalah di mana Unity menyimpan versi aset yang diimpor. Karena Unity selalu dapat menciptakan versi impor ini dari file aset sumber dan ketergantungannya, versi impor ini diperlakukan sebagai cache data pra-kalculated, yang menghemat waktu ketika Anda menggunakan Unity. Untuk alasan ini, Anda harus mengecualikan file dalam Cache Aset dari sistem version controlSistem untuk mengelola perubahan file. Anda dapat menggunakan Unity bersama dengan alat kontrol versi yang paling umum, termasuk Perforce, Git, Mercurial dan PlasticSCM. More info
Lihat di Glossary
.

Unity menggunakan cache lokal secara default, yang berarti bahwa versi aset yang diimpor disimpan dalam folder Library di folder Proyek Anda di mesin lokal Anda. Anda harus menggunakan ignore fileFile khusus yang digunakan dalam banyak Sistem Kontrol Versi yang menentukan file yang akan dikecualikan dari ditempatkan di bawah kendali versi. Dalam proyek Unity ada sejumlah file yang bisa dikecualikan dari kontrol versi, dan menggunakan File Ignore adalah cara terbaik untuk mencapai ini. More info
Lihat di Glossary
untuk mengecualikan folder ini dari kontrol versi.

Namun, jika Anda bekerja sebagai bagian dari tim dan menggunakan sistem kontrol versi, mungkin bermanfaat untuk juga menggunakan Accelerator, yang berbagi Cache Aset di LAN Anda.

Karena cached Aset tidak cocok untuk disimpan dalam sistem kontrol versi, ketika tim Anda bekerja sama pada Proyek dan menggunakan caching lokal, setiap salinan anggota tim Unity melakukan proses impor jika Aset atau perubahan ketergantungan, yang dapat memakan waktu.

Unity menyediakan solusi untuk ini disebut Accelerator. Salah satu fitur Accelerator adalah agen perangkat lunak yang menyimpan dan melayani versi aset yang tersimpan untuk semua orang yang bekerja pada Proyek yang sama bersama di jaringan lokal yang sama. Ini berarti bahwa hanya satu anggota tim perlu mengimpor aset tertentu. Versi yang diimpor dari Asset kemudian disimpan di Accelerator dan anggota tim lain dapat men-download versi cache daripada menunggu proses impor secara lokal.

Sumber aset dan artefak

Unity mempertahankan dua file database di folder Perpustakaan, yang bersama disebut Aset Database. Dua database ini melacak informasi tentang file aset sumber Anda, dan Artief, yang informasi tentang hasil impor.

The source Asset Database

Basis Asset Database berisi meta-informasi tentang file aset sumber Anda yang digunakan Unity untuk menentukan apakah file telah dimodifikasi, dan oleh karena itu apakah itu harus mengubah file. Ini termasuk informasi seperti tanggal modifikasi terakhir, hash konten file, GUID dan meta-informasi lainnya.

The Artifact database

Artifacts adalah hasil dari proses impor. Database artefak berisi informasi tentang hasil impor dari setiap aset sumber. Setiap artefak mengandung informasi ketergantungan impor, artefak meta-informasi dan daftar file artefak.

Sitemap File database terletak di folder Note: Proyek Anda, dan seperti itu Anda harus mengecualikan mereka dari sistem kontrol versi. Anda dapat menemukannya di lokasi berikut:Library folder, and as such you should exclude them from version control systems. You can find them in the following locations:

  • Database Aset Sumber: Library\SourceAssetDB
  • Database: Library\ArtifactDB

Mengimpor Aset

Unity biasanya mengimpor aset secara otomatis ketika mereka diseret ke proyek tetapi juga dimungkinkan untuk mengimpornya di bawah kendali skrip. Untuk melakukan ini Anda dapat menggunakan metode AssetDatabase.ImportAsset seperti dalam contoh di bawah ini.

using UnityEngine;
using UnityEditor;

public class ImportAsset {
    [MenuItem ("AssetDatabase/ImportExample")]
    static void ImportExample ()
    {
        AssetDatabase.ImportAsset("Assets/Textures/texture.jpg", ImportAssetOptions.Default);
    }
}

Anda juga dapat lulus parameter tambahan tipe AssetDatabase.ImportAssetOptions ke AssetDatabase. Login Halaman referensi scripting dokumen pilihan yang berbeda dan efeknya pada perilaku fungsi.

Memuat Aset

Editor memuat aset hanya sesuai kebutuhan, katakanlah jika mereka ditambahkan ke panel 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
atau diedit dari panel 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
. Namun, Anda dapat memuat dan mengakses aset dari skrip menggunakan AssetDatabase.LoadAssetAtPath, AssetDatabase.LoadMainAssetAtPath, AssetDatabase.LoadAllAssetRepresentationsAtPath dan AssetDatabase.LoadAllAssetsAtPath. Lihat dokumentasi scripting untuk rincian lebih lanjut.

using UnityEngine;
using UnityEditor;

public class ImportAsset {
    [MenuItem ("AssetDatabase/LoadAssetExample")]
    static void ImportExample ()
    {
        Texture2D t = AssetDatabase.LoadAssetAtPath("Assets/Textures/texture.jpg", typeof(Texture2D)) as Texture2D;
    }
}

Operasi File menggunakan AssetDatabase

Karena Unity menyimpan metadata tentang file aset, Anda tidak boleh membuat, memindahkan atau menghapusnya menggunakan sistem file. Sebagai gantinya, Anda dapat menggunakan AssetDatabase.Contains, AssetDatabase.CreateAsset, AssetDatabase.CreateFolder, AssetDatabase.RenameAsset, AssetDatabase.CopyAsset, Login Login dan AssetDatabase.MoveAssetToTrash.AssetDatabase.DeleteAsset.

public class AssetDatabaseIOExample {
    [MenuItem ("AssetDatabase/FileOperationsExample")]
    static void Example ()
    {
        string ret;
        
        // Create
        Material material = new Material (Shader.Find("Specular"));
        AssetDatabase.CreateAsset(material, "Assets/MyMaterial.mat");
        if(AssetDatabase.Contains(material))
            Debug.Log("Material asset created");
        
        // Rename
        ret = AssetDatabase.RenameAsset("Assets/MyMaterial.mat", "MyMaterialNew");
        if(ret == "")
            Debug.Log("Material asset renamed to MyMaterialNew");
        else
            Debug.Log(ret);
        
        // Create a Folder
        ret = AssetDatabase.CreateFolder("Assets", "NewFolder");
        if(AssetDatabase.GUIDToAssetPath(ret) != "")
            Debug.Log("Folder asset created");
        else
            Debug.Log("Couldn't find the GUID for the path");
        
        // Move
        ret = AssetDatabase.MoveAsset(AssetDatabase.GetAssetPath(material), "Assets/NewFolder/MyMaterialNew.mat");
        if(ret == "")
            Debug.Log("Material asset moved to NewFolder/MyMaterialNew.mat");
        else
            Debug.Log(ret);
        
        // Copy
        if(AssetDatabase.CopyAsset(AssetDatabase.GetAssetPath(material), "Assets/MyMaterialNew.mat"))
            Debug.Log("Material asset copied as Assets/MyMaterialNew.mat");
        else
            Debug.Log("Couldn't copy the material");
        // Manually refresh the Database to inform of a change
        AssetDatabase.Refresh();
        Material MaterialCopy = AssetDatabase.LoadAssetAtPath("Assets/MyMaterialNew.mat", typeof(Material)) as Material;
        
        // Move to Trash
        if(AssetDatabase.MoveAssetToTrash(AssetDatabase.GetAssetPath(MaterialCopy)))
            Debug.Log("MaterialCopy asset moved to trash");
        
        // Delete
        if(AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(material)))
            Debug.Log("Material asset deleted");
        if(AssetDatabase.DeleteAsset("Assets/NewFolder"))
            Debug.Log("NewFolder deleted");
        
        // Refresh the AssetDatabase after all the changes
        AssetDatabase.Refresh();
    }
}

Platform Switching dan reimporting

Beralih antara platform mungkin menyebabkan Unity untuk mengubah aset Anda. Ini biasanya terjadi ketika cara aset diimpor berbeda antara platform, yang sering terjadi. Misalnya, platform yang berbeda memiliki texture formatsFormat file untuk menangani tekstur selama rendering real-time oleh perangkat keras grafis 3D, seperti kartu grafis atau perangkat seluler. More info
Lihat di Glossary
yang berbeda, sehingga tekstur diimpor berbeda untuk setiap platform.

Saat menggunakan Asset Database V2, platform ini merupakan bagian dari hash yang digunakan Aset Database untuk menyimpan hasil impor bagi importir bawaan Unity. Ini berarti bahwa hasil untuk mengimpor aset Anda pada platform yang berbeda disimpan sebagai potongan terpisah dari data cache.

Hasil fitur ini adalah bahwa pertama kalinya Anda beralih platform dengan aset baru dalam proyek Anda yang belum diimpor untuk platform itu, mereka terkenal. Ini berarti bahwa Anda harus menunggu proses itu selesai. Namun data reimpor baru tidak menimpa impor cache data lama untuk platform sebelumnya.

Ini berarti setiap kali Anda kemudian beralih kembali ke platform di mana Anda telah mengimpor aset untuk platform itu, hasil impor aset tersebut sudah cache dan siap digunakan, membuat sakelar jauh lebih cepat.

Asset Database version

Dokumentasi ini mengacu pada version 2 dari Basis Data Aset, yang merupakan default dalam Proyek baru yang dibuat dengan Unity 2019.3 atau lebih baru. Versi legacy (versi 1) adalah default dalam versi sebelumnya Unity, yang berperilaku dengan cara yang berbeda. Versi legacy tidak dapat digunakan pada Unity 2020+.

Aset Metadata
Refreshing the Asset Database