Unity中建立文本保存数据
public void CreateYunYD()
{
GameToolsManager.Instance.effectType = EFFECTTYPE.YunYD;
CreateYunOrWu("Effect/yunwu-yd", Vector3.zero);
} public void CreateYunZY()
{
GameToolsManager.Instance.effectType = EFFECTTYPE.YunZY;
CreateYunOrWu("Effect/yunwu-zy", Vector3.zero);
} public void CreateWU()
{
GameToolsManager.Instance.effectType = EFFECTTYPE.Wu;
CreateYunOrWu("Effect/wu",Vector3.zero);
} public GameObject CreateYunOrWu(string path,Vector3 vec)
{
GameObject parent;
parent = GameObject.Find("Scene/Effect");
effect = GameObject.Instantiate(Resources.Load(path)) as GameObject;
effect.SetActive(true);
effect.transform.SetParent(parent.transform); effect.transform.localPosition = vec;
effect.name = effect.name.Replace("(Clone)",string.Empty);
return effect; }
/// <summary>
/// 保存云和雾的数据
/// </summary>
public void SaveYunOrWu()
{
Transform child;
GameObject parent;
parent = GameObject.Find("Scene/Effect");
if (IsExistTxt())
{
ClearEffectData();
}
for (int i=0; i< parent.transform.childCount; i++)
{
child = parent.transform.GetChild(i);
EffectData effectData = new EffectData();
effectData.effectName = child.name;
effectData.vectorX = child.localPosition.x;
effectData.vectorY = child.localPosition.y;
effectData.vectorZ = child.localPosition.z;
CreateTextFile("EffectData", System.Convert.ToString(effectData.effectName));
CreateTextFile("EffectData", System.Convert.ToString(effectData.vectorX));
CreateTextFile("EffectData", System.Convert.ToString(effectData.vectorY));
CreateTextFile("EffectData", System.Convert.ToString(effectData.vectorZ)); }
ReadTextData("EffectData");
}
/// <summary>
/// 清空文本中的数据
/// </summary>
public void ClearEffectData()
{
ClearData("EffectData");
}
/// <summary>
/// txt文件是否存在
/// </summary>
/// <returns></returns>
public bool IsExistTxt()
{
string path = Application.dataPath + "/Effect/EffectData.txt";
if (!File.Exists(path))
{
return false;
}
return true;
}
/// <summary>
/// 创建文本文件,并写入文本数据
/// </summary>
/// <param name="fileName"></param>
/// <param name="strFileData"></param>
public void CreateTextFile(string fileName, string strFileData)
{
string strWriteFileData;
strWriteFileData = strFileData;
string path = Application.dataPath + "/Effect/" + fileName + ".txt";
if (!File.Exists(path))
{
StartCoroutine(CreatTxt(path));
}
StreamWriter writer;
writer = File.AppendText(path);
writer.Write(strWriteFileData + "_");
writer.Close();
}
IEnumerator CreatTxt(string path)
{
FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write);
yield return fs;
fs.Close();
}
/// <summary>
/// 读取文本数据
/// </summary>
public string ReadTextData(string fileName)
{
string data;
string path = Application.dataPath + "/Effect/" + fileName + ".txt";
if (!File.Exists(path))
{
return null;
}
StreamReader reader;
reader = File.OpenText(path);
data = reader.ReadToEnd();
if (data != null)
{
reader.Close();
Debug.Log(data);
return data;
}
reader.Close();
return data;
} /// <summary>
/// 清空已保存的数据文件
/// </summary>
public void ClearData(string fileName)
{
string path = Application.dataPath + "/Effect/" + fileName + ".txt";
if (File.Exists(path))
{
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Write);
fs.SetLength(0);
fs.Close();
}
return;
}
/// <summary>
/// 删除已经加载好的云和雾
/// </summary>
public void DeleteYunOrWu()
{
GameObject parent;
parent = GameObject.Find("Scene/Effect");
for (int i = 0; i < parent.transform.childCount; i++)
{
Destroy(parent.transform.GetChild(i).gameObject);
}
}
/// <summary>
/// 特效数据
/// </summary>
public struct EffectData
{
public string effectName;
public double vectorX;
public double vectorY;
public double vectorZ;
}
Dictionary<int, List<float>> effectData;
Dictionary<int, string> effectNameDic; /// <summary>
/// 初始化特效数据
/// </summary>
public void InitEffectData()
{
Vector3 vec;
string name;
effectData = GetEffectData();
Debug.Log("进来了吗");
if (effectData == null)
{
return;
}
for(int i = 0; i < effectNameDic.Count; i++)
{
Debug.Log("进来了吗?"); name = effectNameDic[i];
List <float> vecData = effectData[i];
Debug.Log(vecData[1]);
vec = new Vector3(vecData[0],vecData[1],vecData[2]);
StartCoroutine(CreateSaveEffect(name, vec));
}
}
/// <summary>
/// 生成特效
/// </summary>
/// <returns></returns>
IEnumerator CreateSaveEffect(string name,Vector3 vec)
{
string fullPath = "Effect/" + name;
yield return CreateYunOrWu(fullPath, vec);
} /// <summary>
/// 获得特效数据
/// </summary>
public Dictionary<int, List<float>> GetEffectData()
{
bool changeList = false;
effectData = new Dictionary<int, List<float>>();
effectNameDic = new Dictionary<int, string>();
string effectName = null;
List<float> vectorData = new List<float>();
string data = ReadTextData("EffectData");
int count = 0;
if(data == null)
{
return null;
}
char delimiter = '_';
string[] stringData = data.Split(delimiter);
for (int i = 0; i < stringData.Length - 1; i++)
{
if (changeList)
{
vectorData = new List<float>();
changeList = false;
}
if (i % 4 == 0)
{
effectName = stringData[i];
}
if (i % 4 == 1)
{
double vectorX = System.Convert.ToDouble(stringData[i]);
vectorData.Add((float)vectorX);
}
if (i % 4 == 2)
{
double vectorY = System.Convert.ToDouble(stringData[i]);
vectorData.Add((float)vectorY);
}
if (i % 4 == 3)
{
double vectorZ = System.Convert.ToDouble(stringData[i]);
vectorData.Add((float)vectorZ);
effectData.Add(count, vectorData);
effectNameDic.Add(count, effectName);
vectorData = new List<float>();
count++;
Debug.Log(count+"计数");
}
}
//Debug.Log(effectData);
//Debug.Log(effectData[2][1]+ "effectData");
return effectData;
}
RaycastHit2D hit = new RaycastHit2D();
ParticleSystem par;
Vector3 mousePos; private void Update()
{
if (Input.GetMouseButtonDown(0))
{
GameDataManager.Instance.IsMoveCamera = false;
mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector2 mousePos2D = new Vector2(mousePos.x, mousePos.y);
hit = Physics2D.Raycast(mousePos2D, Vector2.zero);
}
if (Input.GetMouseButton(0)&&hit.transform!=null&&(hit.transform.name.Equals("wu")||hit.transform.name.Equals("yunwu-yd")||hit.transform.name.Equals("yunwu-zy")))
{
mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector2 mousePos2D = new Vector2(mousePos.x, mousePos.y);
//if (hit.transform != null && hit.transform.name.Equals("yunwu-yd") || hit.transform.name.Equals("yunwu-zy"))
//{
// par = hit.transform.GetComponent<ParticleSystem>();
// par.Pause();
//}
if (hit.transform.name.Equals("wu")){
hit.transform.position = mousePos2D;
}
}
if (Input.GetMouseButtonUp(0) && hit.transform != null && (hit.transform.name.Equals("wu") || hit.transform.name.Equals("yunwu-yd") || hit.transform.name.Equals("yunwu-zy")))
{ par = hit.transform.GetComponent<ParticleSystem>();
//Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
//Vector3 mousePos3D = new Vector3(mousePos.x, mousePos.y, 0);
Vector3 vec = new Vector3(mousePos.x, mousePos.y, 0); if (hit.transform.name.Equals("yunwu-yd"))
{
//Vector3 vec = hit.transform.position;
par.Stop();
Destroy(hit.transform.gameObject);
StartCoroutine(CreateSaveEffect("yunwu-yd", vec));
}
if (hit.transform.name.Equals("yunwu-zy"))
{
//Vector3 vec = new Vector3(mousePos.x, mousePos.y, 0);
Destroy(hit.transform.gameObject);
StartCoroutine(CreateSaveEffect("yunwu-zy", vec));
}
hit.transform.localScale = Vector3.one; GameDataManager.Instance.IsMoveCamera = true;
} }
Unity中建立文本保存数据的更多相关文章
- JavaScript在浏览器中把文本保存为文件的方法
JavaScript在浏览器中把文本保存为文件的方法 经过测试第二种方法可以保存更多的文本不至于卡死 var saveTextAsFile1 = function (text, fileName, s ...
- js获取div中的文本框数据
通过div得到div里的所有数据 大神的世界无需解释,当然不是说我,当我看到这些代码的时候我惊呆了! 这是一个工具方法js: js: /* * 获取指定对象下的所有input.textarea值 * ...
- 4、Xcode8中的钥匙串保存数据取出时候为空的问题
Xcode7以及之前的版本直接使用Keychain存储数据即可,但是从Xcode8开始,再用之前的方法会发现,读取不到存进去的数据了,或者说,存储不进去了,原因是苹果加强了隐私保护,这个东西需要打开开 ...
- Unity中加入Android项目的Build步骤
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 简介: 有的项目需要在Android中加入Unity功能,例如ANDROID应用中嵌入Un ...
- Unity日常记录-本地保存未来时间实现倒计时
本地保存未来时间实现倒计时 TimeTool工具类:获取当前时间.未来时间.两时间差 using System; using UnityEngine; public class TimeTool { ...
- C/C++程序从文本文件中读取(保存)数据
:本文仅供初学者参阅,解惑 在C程序中: 与程序代码外的数据(文件)打交道,我们使用到流(stream)这个概念,实现进程的虚拟内存与文件之间的数据交换. ——文件流:C标准库提供了FILE(之所以命 ...
- Android中突发情况Activity数据的保存和恢复
Android中突发情况Activity数据的保存和恢复 写在前面:在我们的APP使用的过程中,总有可能出现各种手滑.被压在后台.甚至突然被杀死的情况.所以对APP中一些临时数据或关键持久型数据,就需 ...
- 【Android Developers Training】 26. 在SQL数据库中保存数据
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- Entity Framework入门教程(6)--- 在线场景中保存数据
在线场景中保存数据 在线场景中保存实体数据是一项相当容易的任务,因为使用的是同一个context,这个context会自动跟踪所有实体发生的更改. 下图说明了在线场景中的CUD(创建,更新,删除)操作 ...
随机推荐
- linux中脚本在任意目录执行
完成了一个脚本,find.sh 如果希望可以再linux系统中任何位置都可以执行该脚本,可以执行下面操作 1. chmod 775 find.sh 给该脚本增加可执行权限 2. export PATH ...
- ZoomIt: 非PPT演示必备辅助软件
下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/zoomit 使用方法: 另一个免费的屏幕标注工具:Pointofix v1. ...
- [原创] JAVA 递归线程池测试 ExecutorService / ForkJoinPool
测试工具使用递归的方式获取子进程的Msg消息,目前有2种常用的ExecutorService / ForkJoinPool 为了测试哪种效果较好,我们来写个测试Demo,循环5555555次+1(加锁 ...
- Dell Inspiron 620 / Vostro 260 BIOS 开启 AHCI 模式
1.Dell Vostro 260 台式机,WIN7 旗舰版 2.登陆 DELL 官方支持站点,获取 MS-A10.exe 安装文件 3.从网络中获取 AMIBCP.exe 工具,双击打开此程 ...
- php中获取当前时间
因为php种有时区的设置,默认与我们这边差8小时:所以我们直接使用data方法的话,得到的时间是不准确的 所以我们在开头设置时区 //设置时区的方法: date_default_timezone_se ...
- mysql之工具的使用总结(mac版本)
13.mysql Mac终端操作 12.MySql在Mac上的安装与配置详解: 11.mac下安装mysql5.7.18,连接出现Access denied for user 'root'@'loca ...
- LeetCode【108. 将有序数组转换为二叉搜索树】
又是二叉树,最开始都忘记了二叉搜索树是什么意思,搜索了一下: 二叉搜索树:左节点都小于右节点,在这里就可以考虑将数组中的中间值作为根节点 平衡二叉树:就是左右节点高度不大于1 树就可以想到递归与迭代, ...
- 转载:MySQL:亲测备份策略实例(线上真实备份案例)
是否为线上库的备份而烦恼过,这里提供一个完整的备份从属数据库的备份方案,亲测可用 说明: 备份从库,按周计,每周进行一次全备 每周一的早上六点进行全备,其他时间备份中继日志 在从库上启用rsync服务 ...
- navicat 导入execl失败
在使用navicat导入execl是遇到了如下图的错误 在更换多个版本的navicat后问题依然如故. 解决办法; 1.打开需要导入的execl 2.安装一个AccessDatabaseEngine_ ...
- android 中activity重启的方法
private void reLoadActivity(){ Intent intent = new Intent(context, SettingsActivity.class); intent.s ...