查看: 18773|回复: 125

[在unity中制作] 资源数据库

  [复制链接]

4

主题

4

帖子

1378

积分

vip会员

Rank: 1

积分
1378
发表于 2016-7-15 00:52:38 | 显示全部楼层 |阅读模式
AssetDatabase是一个API,它允许您访问您的项目中的资产。在其他方面,它提供的方法来查找和加载资产,创建,删除和修改。Unity编辑器内部使用AssetDatabase保持跟踪资源文件和保持资产和引用它们的对象之间的关联。由于Unity需要保持跟踪项目文件夹中的所有变化,你应该始终使用AssetDatabase API,而不是文件系统,如果你想访问或修改的资产数据。

AssetDatabase接口只有编辑和在建的球员没有功能。像所有其他编辑类,它只适用于放置在编辑文件夹中的脚本(只创建一个文件夹命名为“编辑”在你的项目的主要资产文件夹,如果没有的话)。

导入资产

统一的资产通常进口时自动被拉到项目,但也可能是在脚本控制下导入。你可以使用的assetdatabase.importasset方法如下面的例子。

使用
UnityEngine;使用UnityEditor;

公共课importasset {
[菜单项(“AssetDatabase / importexample”)]
静态importexample()
{
AssetDatabase。importasset(“资产/材质/贴图.jpg”,importassetoptions。默认)
你也可以通过一个额外的参数的类型assetdatabase.importassetoptions到assetdatabase.importasset呼叫。脚本参考页文件的不同选项和功能行为的影响。

加载一个资产

编辑负载只有资产的需要,说如果他们被添加到场景或在检视面板编辑。然而,你可以加载和访问资产从脚本使用assetdatabase.loadassetatpath,assetdatabase.loadmainassetatpath,assetdatabase.loadallassetrepresentationsatpath和assetdatabase.loadallassetsatpath。看到脚本文件详情。

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;
    }
}

使用AssetDatabase文件操作

由于Unity保留有关资源文件的元数据,你不应该创建、移动或删除它们使用文件系统。相反,你可以使用包含AssetDatabase。,assetdatabase.createasset,assetdatabase.createfolder,assetdatabase.renameasset,assetdatabase.copyasset,assetdatabase.moveasset,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();
    }
}

使用AssetDatabase。刷新

当你完成修改的资产,你应该叫AssetDatabase。刷新提交更改到数据库,并使他们在项目可见。

回复

使用道具 举报

0

主题

880

帖子

2908

积分

vip会员

Rank: 1

积分
2908
发表于 2016-7-15 00:52:39 来自手机 | 显示全部楼层
快没金币了,看看需要多少?
回复 支持 反对

使用道具 举报

0

主题

827

帖子

2744

积分

vip会员

Rank: 1

积分
2744
发表于 2016-7-15 01:29:46 来自手机 | 显示全部楼层
秒了 秒了  秒了  这东西 秒了
回复 支持 反对

使用道具 举报

0

主题

858

帖子

2837

积分

vip会员

Rank: 1

积分
2837
发表于 2016-7-15 01:45:51 来自手机 | 显示全部楼层
不错,我喜欢这个,看看多少金币哦
回复 支持 反对

使用道具 举报

0

主题

948

帖子

3135

积分

vip会员

Rank: 1

积分
3135
发表于 2016-7-15 02:25:54 | 显示全部楼层
看一下你发的到底是什么鬼!
回复 支持 反对

使用道具 举报

0

主题

842

帖子

2786

积分

vip会员

Rank: 1

积分
2786
发表于 2016-7-15 02:51:35 来自手机 | 显示全部楼层
我来看看 这个怎么样
回复 支持 反对

使用道具 举报

0

主题

824

帖子

2714

积分

vip会员

Rank: 1

积分
2714
发表于 2016-7-15 03:46:10 来自手机 | 显示全部楼层
全部吗,谢谢啦
回复 支持 反对

使用道具 举报

0

主题

842

帖子

2758

积分

vip会员

Rank: 1

积分
2758
发表于 2016-7-15 04:14:41 | 显示全部楼层
这样的人是业界良心 有时在人人下个东西学比取经还难
回复 支持 反对

使用道具 举报

0

主题

901

帖子

2987

积分

vip会员

Rank: 1

积分
2987
发表于 2016-7-15 04:34:54 来自手机 | 显示全部楼层
快没金币了,看看需要多少?
回复 支持 反对

使用道具 举报

0

主题

844

帖子

2781

积分

vip会员

Rank: 1

积分
2781
发表于 2016-7-15 05:16:54 | 显示全部楼层
大水比一个,路过支持一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | enginedx注册

本版积分规则

 
 



邮件留言:


 
返回顶部