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中建立文本保存数据的更多相关文章

  1. JavaScript在浏览器中把文本保存为文件的方法

    JavaScript在浏览器中把文本保存为文件的方法 经过测试第二种方法可以保存更多的文本不至于卡死 var saveTextAsFile1 = function (text, fileName, s ...

  2. js获取div中的文本框数据

    通过div得到div里的所有数据 大神的世界无需解释,当然不是说我,当我看到这些代码的时候我惊呆了! 这是一个工具方法js: js: /* * 获取指定对象下的所有input.textarea值 * ...

  3. 4、Xcode8中的钥匙串保存数据取出时候为空的问题

    Xcode7以及之前的版本直接使用Keychain存储数据即可,但是从Xcode8开始,再用之前的方法会发现,读取不到存进去的数据了,或者说,存储不进去了,原因是苹果加强了隐私保护,这个东西需要打开开 ...

  4. Unity中加入Android项目的Build步骤

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 简介: 有的项目需要在Android中加入Unity功能,例如ANDROID应用中嵌入Un ...

  5. Unity日常记录-本地保存未来时间实现倒计时

    本地保存未来时间实现倒计时 TimeTool工具类:获取当前时间.未来时间.两时间差 using System; using UnityEngine; public class TimeTool { ...

  6. C/C++程序从文本文件中读取(保存)数据

    :本文仅供初学者参阅,解惑 在C程序中: 与程序代码外的数据(文件)打交道,我们使用到流(stream)这个概念,实现进程的虚拟内存与文件之间的数据交换. ——文件流:C标准库提供了FILE(之所以命 ...

  7. Android中突发情况Activity数据的保存和恢复

    Android中突发情况Activity数据的保存和恢复 写在前面:在我们的APP使用的过程中,总有可能出现各种手滑.被压在后台.甚至突然被杀死的情况.所以对APP中一些临时数据或关键持久型数据,就需 ...

  8. 【Android Developers Training】 26. 在SQL数据库中保存数据

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  9. Entity Framework入门教程(6)--- 在线场景中保存数据

    在线场景中保存数据 在线场景中保存实体数据是一项相当容易的任务,因为使用的是同一个context,这个context会自动跟踪所有实体发生的更改. 下图说明了在线场景中的CUD(创建,更新,删除)操作 ...

随机推荐

  1. python3-基础6

    函数嵌套调用: 再调用一个函数的过程中,又调用了其他的函数 函数的嵌套定义:在一个函数的内部,又定义另外一个函数,函数内部定义的变量,在外部不能被调用 名称空间:一种隔离的概念,专门用来存放名字的地方 ...

  2. HTML与CSS:结构与表现

    在HTML和CSS里存在着部分重复的功能,例如两者都可以设定一段文字的字体属性.既然如此,为啥还要CSS呢(至少,为啥CSS里存在着和HTML标签属性重复的东西呢)? 这是因为,HTML和CSS的用途 ...

  3. C++ 重定义、重载、覆盖

    想要用好C++继承和类自身函数实现就必须了解C++得三个概念重定义(redefine).重载(overload).重写(override). 一 基本感念 1 重定义(redefine) 派生类对基类 ...

  4. 饿了么测试专场技术沙龙实况回顾&PPT 下载

    PPT下载和视频观看链接 链接:https://pan.baidu.com/s/1dE8uXHZ 密码:6j5z视频直播回顾: http://www.itdks.com/dakashuo/playba ...

  5. js判断数组里是否有重复元素的方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/longzhoufeng/article/details/78840974 第一种方法:但是下面的这种 ...

  6. Java中static、final、static final的区别(转)

    说明:不一定准确,但是最快理解. final: final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变. final ...

  7. sqlserver2016新功能

    SQL Server 2016中的新功能(数据库引擎) 2017年1月13日  23分钟阅读时长 作者 本人建了个领优惠卷购物群,平时网购可以省点钱.有需要的加群:511169656交流,谢谢 本主题 ...

  8. python-封装方法用于读取excel

    1.实现获取excel某张表的行数.单元格数据 #coding=utf-8 import xlrd #获取excel文件 data = xlrd.open_workbook('file_path/xx ...

  9. React Native仿京东客户端实现(首页 分类 发现 购物车 我的)五个Tab导航页面

    1.首先创建  这几个文件 myths-Mac:JdApp myth$ yarn add react-native-tab-navigator 2.各个文件完整代码 1)CartPage.js imp ...

  10. debian apache2 多端口对应多文件 虚拟端口配置

    apache2单IP多端口创建虚拟站点如下: 1.转到配制目录虚拟站点配制目录 cd /etc/apache2/ ​ 2.配置新增多的端口 编辑上级目录中的端口配制文件sudo gedit ports ...