当前位置:   article > 正文

unity配置.asset文件_unity .asset

unity .asset

unity配置数据可以XML,可以JSON,unity自带的 .asset文件也可以哦,而且能配置的数据类型也比较多。这里说明一下怎么在unity中生成 .asset文件。

首先来个脚本:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public enum BulletType
{
    smallDestroy,
    midDestroy,  
    bigDestroy,
}
//类继承自ScriptableObject
public class BulletTest : ScriptableObject {

    public BulletType bulletType = BulletType.midDestroy;
    [Range(10,100)]
    public int speed = 50;

    public int damage = 20;

    public GameObject damageEffect;

    public Sprite mySprite;

    public AudioClip audioClip;

    public Texture myTexture;

    public Vector3 position;

    public List<string> list;

    public AudioSource audioSource;

    public AutoSail aa;

    public MovieTexture moiveTexture;
    [System.Serializable]
    public class TestClass
    {
        public string name = "likang";
        public int level = 99;
        public float attack = 500;
    }
    public TestClass test;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

再建一个editor脚本用来生成.asset文件:

using UnityEngine;
using UnityEditor;
using System.IO;
public class AssetTest : Editor {

    [MenuItem("CreateAsset/king")]
    static void Create()
    {
        //创建一个ScriptableObject的实例
        ScriptableObject bullet = ScriptableObject.CreateInstance<BulletTest>();

        if (!bullet)
        {
            Debug.LogError("bulletTest not found");
            return;
        }
        string path = Application.dataPath + "/BulletFolder";

        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);//创建指定目录
        }
        //后缀必须是.asset ; 文件名必须和类名一致
         path = string.Format("Assets/BulletFolder/{0}.asset", typeof(BulletTest).ToString());

        AssetDatabase.CreateAsset(bullet,path); //在指定路径下创建一个asset配置文件
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

生成后的.asset文件如下:
。。。
这里写图片描述

然后就可以再其他地方用这个.asset配置文件了,注意因为最上面的脚本继承自ScriptableObject,而不是Monobehaviour,所以在unity运行时修改的数据不会在unity停止运行后恢复到原本模样(这个对于微调某些数据来达到最佳效果时还是有用的)。

懒人引用.asset文件:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestOne : MonoBehaviour {

    public BulletTest bullet;

    // Use this for initialization
    void Start ()
    {
        Debug.Log(bullet.damageEffect);
        Debug.Log(string.Format("sprite:{0};texture:{1};audioclip:{2}",bullet.mySprite,bullet.myTexture,bullet.audioClip));
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/81956
推荐阅读
相关标签
  

闽ICP备14008679号