Unity外部加载文本数据——避免修改部分数据重新导出包

    用unity3d做游戏,应用时,经常导出后需要调整一些数据,再进去调整,导出就太费事了,我们可以把一些需要经常改动的数据保存在外部文本数据中,然后便运行边调整数据,无需多次导出包。

注意:文本保存的格式必须是utf-8格式

先看一下运行效果,右下角的数据是文本中的。

看一下,文本的数据:

Unity外部加载文本数据——避免修改部分数据重新导出包_第1张图片


代码如下:

读取文件的代码:

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

public class test : MonoBehaviour {

	//用于记录数据的静态值//
	public static float start_time;
	public static float continue_time;
	public static float soundPlay_time;

	//文本中每行的内容//
	ArrayList infoall;

	// Use this for initialization
	void Start () 
	{
		//给出相对加载路径和文件名//
		infoall=LoadFile(Application.dataPath+"/../test_Data/","test.txt");
	}

	//读取文本//
	ArrayList LoadFile(string path,string name)
	{
		//使用流的形式读取//
		StreamReader sr = null;
		try
		{
			sr=File.OpenText(path+"//"+name);
		}
		catch(Exception e)
		{
		 	//路径与名称未找到文件则直接返回空//
			return null;
		}
		string line;
		ArrayList arrlist = new ArrayList ();
		while ((line=sr.ReadLine())!=null) 
		{
			//一行一行的读取
			//将每一行的内容存入数组链表容器中
			arrlist.Add(line);
			GetData(line);
		}
		//关闭流//
		sr.Close ();
		//销毁流//
		sr.Dispose ();
		//将数组链表容器返回//
		return arrlist;
	}

	void GetData(string line)
	{
		if (line.ToLower ().StartsWith ("开始时间") == true) 
		{
			start_time = float.Parse (line.Split ('=') [1]);
		} 
		else if (line.ToLower ().StartsWith ("持续时间") == true) 
		{
			continue_time=float.Parse(line.Split('=')[1]);
		}
		else if(line.ToLower().StartsWith("声音播放")==true)
		{
			soundPlay_time=float.Parse(line.Split('=')[1]);
		}
	}
}
测试数据读取的代码如下:

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

public class FileRead : MonoBehaviour {

	public GUIText myguitext;

	void OnGUI()
	{
		if(GUI.Button(new Rect(0,0,120,30),"show start_time"))
		{
			//获取文本中的开始时间//
			myguitext.text=test.start_time.ToString();
		}

		if (GUI.Button (new Rect (0, 40, 120, 30), "show continue_time")) 
		{
			//获取文本中的持续时间//
			myguitext.text=test.continue_time.ToString();
		}

		if (GUI.Button (new Rect (0, 80, 120, 30), "show soundPlay_time")) 
		{
			//获取文本中的声音播放时间//
			myguitext.text=test.soundPlay_time.ToString();
		}

	}
}
导出后文本文档的放置位置需要根据代码:

Unity外部加载文本数据——避免修改部分数据重新导出包_第2张图片

所以这样就可以啦。。。。。

你可能感兴趣的:(数据,C#,unity,文档,unity3d)