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.
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:
ScriptedImporter
pada kelas CubeImporter.ScriptedImporter
.OnImportAsset
mengandung data input dan output untuk acara impor.SetMainAsset
.AddSubAsset
yang diperlukan.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();
}
}
Setelah Anda menambahkan kelas importir skrip ke proyek, Anda dapat menggunakannya seperti jenis file asli lainnya yang didukung oleh Unity:
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.