Unity 读取文件 TextAsset读取配置文件方式
作者:gd_2015 发布时间:2023-07-05 12:24:05
1 支持文件类型
.txt
.html
.htm
.xml
.bytes
.json
.csv
.yaml
.fnt
2 寻找文件
1 //Load texture from disk
TextAsset bindata= Resources.Load("Texture") as TextAsset;
Texture2D tex = new Texture2D(1,1);
tex.LoadImage(bindata.bytes);
2 直接在编辑器中赋值
public TextAsset textFile;
3 配置文件通常分行配置属性
例如:
英雄名称,等级,生命,攻击
hero1,1,1,1
hero2,1,1,1
string[] lines = textFile.text.Split("\n"[0]); 可以读出属性
lines[0] = "英雄名称,等级,生命,攻击"
lines[1] = "hero1,1,1,1"
lines[2] = "hero2,1,1,1"
然后可以读出每条数据的具体属性
for (int i = 0; i < lines.Length - 2; i++) {
string[] parts = lines[i + 1].Split(","[0]);
}
parts[0] = "hero1" parts[1] = "1" parts[2] = "1" parts[2] = "1
补充:Unity加载TextAsset中的内容为空
需求需要从Resources目录下加载json文件,于是在目录下创建了个txt文本,然后修改后缀名为.Json,
用Resource.Load<TextAsset>() 发现TextAsset.text竟然为空,里面什么都没有,以为是.Json首字母大写的缘故,于是改为.json,结果还没有用,
新开工程却发现用脚本生成的json文件却是可以获取到的,再仔细检查发现选中json文件的时候属性面板竟然什么都没显示出来,于是怀疑json文件不正确没有被unity识别到,用vs高级保存选项发现文本竟然是GBK2312格式,改为UTF-8格式发现可以显示出来并能读取到text。
于是怀疑是创建txt文本时默认编码格式不正确,发现默认编码格式是ASCII格式,看来以后创建json的时候更要注意编码格式的问题了。
补充:Unity 简易读取配置文件内容(txt,懒人用)
翻以前别人写的一个项目,看到读取本地配置文件的,目前虽然不太懂,但是先放着,估摸以后牛B了就看懂了
首先自定义一个config类:
using UnityEngine;
using System.Collections;
using System;
[Serializable] //一定要有,同时不能继承MonoBehaviour
public class Config {
public int Num1; //我文档里有2个int,2个string类型
public int Num2;
public string String1;
public string String2;
// Use this for initialization
void Start () {
}
private static Config _data;
public static Config _Data
{
get
{
if (_data == null)
{
string json = System.IO.File.ReadAllText(Application.streamingAssetsPath + "/test.txt");
_data = JsonUtility.FromJson<Config>(json);
}
return _data;
}
}
}
然后在unity 的StreamingAssets文件夹下创建个test.txt
里面内容:(一定要有花括号)
{"Num1":30,"Num2":60,"String1":"aaa","String2":"bbb"}
然后再其他脚本里,直接调用就好了
例如:
using UnityEngine;
using System.Collections;
public class LoadConfig : MonoBehaviour {
// Use this for initialization
void Start () {
print(Config._Data.Num1);
print(Config._Data.String2);
}
// Update is called once per frame
void Update () {
}
}
2017.3.27更新:自己又理解了一点
如果要读取网页某天气信息,但是不止一个花括号,分了几层,需要怎么做?
例如信息:
{"weatherinfo":{"city":"北京","cityid":"101010100","temp":"18","WD":"东南风","WS":"1级","SD":"17%","WSE":"1","time":"17:05","isRadar":"1","Radar":"JC_RADAR_AZ9010_JB","njd":"暂无实况","qy":"1011","rain":"0"}}
上面的就不多复述,大概思路就是再建立一个类保存二级信息
Config类修改如下(之前的全部删除):
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
[Serializable] //一定要有,同时不能继承MonoBehaviour
public class Config {
public Weatherinfo weatherinfo; //这里的weatherinfo 就是上面信息的第一层weatherinfo,建立父级保存信息(名字要对应天气的weatherinfo)
}
[Serializable]
public class Weatherinfo //weatherinfo下的信息保存,类里的city 对应信息里的city,一次类推,我就写2个了;
{
public string city;
public int cityid;
}
再新建一个名字为LoadWWW的脚本,用于读取网络的数据:
using UnityEngine;
using System.Collections;
using System;
public class LoadWWW : MonoBehaviour {
Config _config = new Config();
// Use this for initialization
void Start () {
StartCoroutine("load");
Invoke("LoadMessage", 1f);
}
// Update is called once per frame
void Update () {
}
IEnumerator load()
{
WWW w = new WWW("http://www.weather.com.cn/data/sk/101010100.html");//加载某网页数据,根据自己需求改
yield return w;
string json = w.text;
print(json);
_config = JsonUtility.FromJson<Config>(json);
}
void LoadMessage()
{
print(_config.weatherinfo.city);
print(_config.weatherinfo.cityid);
}
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/wdsdsdsds/article/details/50592066


猜你喜欢
- 在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择。这些功能我们叫它Android Di
- 1、多个线程对同一个队列进行读写操作,要注意进行读写控制,某个线程在读取的时候,不允许其它线程读、写;某个线程在写的时候,不允许其它线程进行
- boot-admin整合Quartz实现动态管理定时任务淄博烧烤爆红出了圈,当你坐在八大局的烧烤摊,面前是火炉、烤串、小饼和蘸料,音乐响起,
- 示例代码:<%@ Page Language="C#" AutoEventWireup="true&qu
- Android 读取文件内容实现方法,这里整理了几种方法,大家需要可以看下。如果要打开存放在/data/data/<package n
- 使用System.Threading.Thread类可以创建和控制线程。常用的构造函数有: // 摘要: // 初
- Spring Cloud Gateway是Spring 官方基于Spring 5.0、Spring Boot 2.0和Project Rea
- 参数传递即将参数传输到程序后台中,后台可能做一些处理,然后再将内容存入数据库之类嗒!参数传递的方法较多,一一说明如下。1、Action中直接
- 本文实例为大家分享了Java测试网络连通性的方法,供大家参考,具体内容如下第一种方式:利用java运行时: Java代码 /** * tes
- 本文实例讲述了Java TreeMap排序算法。分享给大家供大家参考,具体如下:TreeMap 和 HashMap 用法大致相同,但实际需求
- 安全无处不在,趁着放假读了一下 Shiro 文档,并记录一下 Shiro 整合 Spring Boot 在数据库中根据角色控制访问权限简介A
- 1,编写一个程序,读取文件test.txt的内容并在控制台输出。如果源文件不存在,则显示相应的错误信息。 package src;impor
- 1. 并行和并发有什么区别?并行:多个处理器或多核处理器同时处理多个任务。并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执
- 开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了。但是,很多时候我们本想开发一款只需要一个
- 最近研究OpenCV想用java进行开发,因此研究了一下怎么在Eclipse中配置基于java的Opencv.第一步:先到OpenCV官网下
- 一.内部类的介绍 内部类: 一个类定义在 另一个类 的 内部。 &
- Mybatis Criteria条件查询CriterionCriterion是最基本,最底层的Where条件,用于字段级的筛选。Criter
- 本文实例展示了DevExpress实现GridView当无数据行时提示消息的方法,具体步骤如下:主要功能代码部分如下:/// <sum
- 最近项目中新增的功能,需要对手机号、姓名、身份证号等一些信息进行验证,最好的方法是通过正则表达式来验证,网上查了一些资料,写了这几个工具方法
- 概述HashTable是jdk 1.0中引入的产物,基本上现在很少使用了,但是会在面试中经常被问到,你都知道吗:HashTable底层的实现