-->

Asset Database

Advertisemen


AssetDatabase

AssetDatabase merupakan API yang memungkinkan Anda untuk mengakses aset yang terkandung dalam proyek Anda. Antara lain, ia menyediakan metode untuk menemukan, memuat dan juga membuat, menghapus dan memodifikasi nya, Unity Editor menggunakan AssetDatabase internal untuk melacak file aset dan memelihara hubungan antara aset dan objek mereferensi satu sama lain
Sejak Unity perlu melacak semua perubahan yang ada didalam folder proyek, Anda harus selalu menggunakan AssetDatabase API dari pada mengunakan filesystem jika Anda ingin mengakses atau mengubah data aset.
interface AssetDatabase hanya tersedia dalam editor dan tidak memiliki fungsi untuk membangun sebuah player, sam halnya dengan semua kelas editor lainya, itu hanya tersedia untuk script yang di tempatkan di folder editor, (kita hanya perlu membuat satu folder yang di beri nama "Editor" di dalam folder aset utama, jika di dalamnya belum tersedia)

Importing an Asset

Unity biasanya meng-import asset secara otomatis ketika di seret/drag kedalam project Unity, tapi Unity juga memungkinkan untuk mengimport asset dengan mengunakan Script Control. untuk melakukan ini anda bisa mengunakan AssetDatabase.ImportAsset seperti contoh di bawah

using UnityEngine;
using UnityEditor;

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

File Operations using the AssetDatabase

semenjak Unity mempertahankan metadata sebagai asset file, anda tidak di perkenankan untuk membuat, memindah, atau menghapus-nya mengunakan filesistem, sebaliknya adna dapat mengunakan AssetDatabase.Contains, AssetDatabase.CreateAsset, AssetDatabase.CreateFolder, AssetDatabase.RenameAsset, AssetDatabase.CopyAsset, AssetDatabase.MoveAsset, AssetDatabase.MoveAssetToTrash and 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();
    }
}

Using AssetDatabase.Refresh

Keteika anda sudah selesai membuat perubahan pada asset, anda harus memangil AssetDatabasse.refresh untuk melakukan perubahan pada database dan membuat –nya dapat terlihat di projectView


http://docs.unity3d.com/Manual/AssetDatabase.html
Advertisemen

Disclaimer: Gambar, artikel ataupun video yang ada di web ini terkadang berasal dari berbagai sumber media lain. Hak Cipta sepenuhnya dipegang oleh sumber tersebut. Jika ada masalah terkait hal ini, Anda dapat menghubungi kami disini.

No comments:

Post a Comment

© Copyright 2017 Tutorial Unity 3D