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. getOrCreateEnvironment()方法源码探究

    该方法目的是创建一个环境对象,并且根据环境类型,自动判断是创建web环境对象,还是标准非web环境对象. 首先该方法源于prepareEnvironment准备环境: 然后进入该方法源码: 可以发现: ...

  2. Elasticsearch-6.7.0系列(五)5044端口 logstash安装

    centos7环境 下载logstash wget https://artifacts.elastic.co/downloads/logstash/logstash-6.7.0.tar.gz      ...

  3. MySQL 之 MHA + ProxySQL + keepalived 实现读写分离,高可用(三)

    设置Keepalived VIP切换邮件告警 修改keepalived.conf配置: [root@server01 keepalived]# cat keepalived.conf ! Config ...

  4. springboot连mysql报一个奇怪的错误

    错误提示:Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection ...

  5. JMeter4.0源码导入Eclipse记录

    参考: https://blog.csdn.net/yue530tomtom/article/details/77870233?locationNum=10&fps=1 1.准备jdk环境 下 ...

  6. tensorflow/threading 用到的一些函数

    ---恢复内容开始--- import tensorflow as tf 1    tf.squeeze([1,2,3,4])  删除所有为1的维度   eg shape从(1,2,3,1)到(2,3 ...

  7. Navicat操作SQL server 2008R2文件.bak文件还原

    项目操作过程中,利用Navicat操作SQL Server2008R2数据备份,结果发现数据丢失了很多,不得不先对数据丢失部分进行差异对比,然后再重新输入. 1.利用Navicat导出的数据格式为sq ...

  8. 学习excel的使用技巧统计文本出现的次数

    其实是使用一个函数来完成的 =ifcount(C1:C214,''test123") 统计c1到c214中出现的test123的次数

  9. python:windows下python2.7安装mysql-python失败【转】

    转自:https://www.cnblogs.com/yujiebingqing/p/9633476.html 当我们尝试用: 1 pip install mysql-python #并不是MySQL ...

  10. OO第二单元(电梯)单元总结

    OO第一单元(求导)单元总结 这是我们OO课程的第二个单元,这个单元的主要目的是让我们熟悉理解和掌握多线程的思想和方法.这个单元以电梯为主题,从一开始的最简单的单部傻瓜调度(FAFS)电梯到最后的多部 ...