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
No comments:
Post a Comment