Impor Built-in
Konsistensi Importir

WordPress.org

Login Importir adalah bagian dari API documentation. Anda dapat menggunakan Importir Scripted untuk menulis importir Aset kustom di C #, yang memungkinkan Anda untuk menambahkan dukungan Anda sendiri untuk format file yang tidak didukung secara asli oleh Unity.

Anda dapat membuat impor kustom dengan mengkhususkan diri kelas abstrak ScriptedImporter dan menerapkan atribut ScriptedImporter. Ini mendaftarkan impor kustom Anda untuk menangani satu atau lebih ekstensi file. Ketika file yang cocok dengan ekstensi file yang terdaftar terdeteksi oleh pipa Aset sebagai baru atau diubah, Unity memanggil metode OnImportAsset dari impor kustom Anda.

Catatan: Alkitab Importir tidak dapat menangani ekstensi file yang sudah ditangani secara asli oleh Unity.

Example

Di bawah ini adalah contoh sederhana sebagai Importir Scripted: Ini mengimpor file aset dengan ekstensi "cube" ke Unity PrefabJenis 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
dengan primitive kubus sebagai Aset utama dan bahan dan warna default, dan menetapkan posisinya dari nilai yang dibaca dari file Aset:

using UnityEngine;
using UnityEditor.AssetImporters;
using System.IO;

[ScriptedImporter(1, "cube")]
public class CubeImporter : ScriptedImporter
{
    public float m_Scale = 1;

    public override void OnImportAsset(AssetImportContext ctx)
    {
        var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
        var position = JsonUtility.FromJson<Vector3>(File.ReadAllText(ctx.assetPath));

        cube.transform.position = position;
        cube.transform.localScale = new Vector3(m_Scale, m_Scale, m_Scale);

        // 'cube' is a GameObject and will be automatically converted into a prefab
        // (Only the 'Main Asset' is eligible to become a Prefab.)
        ctx.AddObjectToAsset("main obj", cube);
        ctx.SetMainObject(cube);

        var material = new Material(Shader.Find("Standard"));
        material.color = Color.red;

        // Assets must be assigned a unique identifier string consistent across imports
        ctx.AddObjectToAsset("my Material", material);

        // Assets that are not passed into the context as import outputs must be destroyed
        var tempMesh = new Mesh();
        DestroyImmediate(tempMesh);
    }
}

Note:

  • Importir terdaftar dengan pipa Aset Unity dengan menempatkan atribut ScriptedImporter pada kelas CubeImporter.
  • Kelas kubus menerapkan kelas dasar abstrak ScriptedImporter.
  • argumen ctx OnImportAsset mengandung data input dan output untuk acara impor.
  • Setiap acara impor harus menghasilkan satu (dan hanya satu) panggilan ke SetMainAsset.
  • Setiap acara impor dapat menghasilkan banyak panggilan ke AddSubAsset yang diperlukan.
  • Silakan merujuk pada API documentation untuk rincian lebih lanjut.

Anda juga dapat menerapkan Editor Pengaturan Impor khusus dengan kelas ScriptedImporterEditor dan menghiasnya dengan atribut kelas CustomEditor untuk memberi tahu jenis importir yang digunakan untuk.

Contoh:

using UnityEditor;
using UnityEditor.AssetImporters;
using UnityEditor.SceneManagement;
using UnityEngine;

[CustomEditor(typeof(CubeImporter))]
public class CubeImporterEditor: ScriptedImporterEditor
{
    public override void OnInspectorGUI()
    {
        var colorShift = new GUIContent("Color Shift");
        var prop = serializedObject.FindProperty("m_ColorShift");
        EditorGUILayout.PropertyField(prop, colorShift);
        base.ApplyRevertGUI();
    }
}

Menggunakan Impor Scripted

Setelah Anda menambahkan kelas importir skrip ke proyek, Anda dapat menggunakannya seperti jenis file asli lainnya yang didukung oleh Unity:

  • Drop file yang didukung dalam hierarki direktori Aset untuk impor.
  • Restarting Editor Unity mengubah file apa pun yang telah berubah sejak pembaruan terakhir.
  • Mengedit file Asset pada disk dan kembali ke Editor Unity memicu reimport.
  • Mengimpor aset baru menggunakan AssetSetiap media atau data yang dapat digunakan dalam permainan atau proyek Anda. Aset mungkin berasal dari file yang dibuat di luar Unity, seperti model 3D, file audio atau gambar. Anda juga dapat membuat beberapa jenis aset di Unity, seperti Pengontrol Animator, Audio Mixer atau Tekstur Render. More info
    Lihat di Glossary
    > Import New Asset….
  • Jelas memicu re-import melalui menu: Asset > Reimport.
  • Klik pada Aset untuk melihat pengaturannya di Jendela inspektur. Untuk memodifikasi pengaturannya, edit di jendela 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
    dan klik Apply.

The Inspector window of an Asset (An Alembic Girl) imported by the Scripted Importer
Jendela Inspektur Aset (An Alembic Girl) yang diimpor oleh Pengimpor Scripted

Penggunaan dunia nyata dari Pengelola Scripted

  • Alembic: Importir Alembic plug-inSatu set kode yang dibuat di luar Unity yang menciptakan fungsi dalam Unity. Ada dua jenis plug-ins yang dapat Anda gunakan di Unity: Managed plug-ins (diproduksi. Rakitan NET dibuat dengan alat-alat seperti Studio Visual) dan plug-ins asli (pustaka kode asli yang spesifik platform). More info
    Lihat di Glossary
    telah diperbarui untuk menggunakan Impor Scripted. Untuk informasi lebih lanjut, kunjungi Unity github: AlembicImporter.

  • USD: The USD importer plug-in telah diperbarui untuk menggunakan Impor Scripted. Untuk informasi lebih lanjut, silakan kunjungi Unity github: USDForUnity.

Impor Built-in
Konsistensi Importir