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. h5动画如何实现?如何快速开发h5动画

    最近几年随着h5的兴起,复杂的h5动画,甚至是交互动画类型的产品不断涌现,尤其在课件产品方面,很多公司都有相关需求,最近很多h5开发工程师想了解相关方面的技术. 针对h5,如果是简单的动画效果,可以考 ...

  2. 【mark】OS是否使用svc方式分开系统空间和用户空间的优劣

    对于Cortex-M单片机,用户程序调用RTOS系统函数有两种思路: 假设创建任务的RTOS函数是xxx_task_create() 第一类:FreeRTOS.RT-Thread中采用的方法,和调用普 ...

  3. POI 生成、导出Excel(包含多个sheet)带 图片

    1.导入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</ar ...

  4. (转)Android之发送短信的两种方式

    https://www.cnblogs.com/dongweiq/p/4866022.html if(TextUtils.isEmpty(number)||TextUtils.isEmpty(cont ...

  5. [转][C#]ImageHelper

    { internal static class ImageHelper { public static Bitmap CloneBitmap(Image source) { if (source == ...

  6. IDEA 运行spring boot出现端口占用的问题

    Description: The Tomcat connector configured to listen on port 8080 failed to start. The port may al ...

  7. Git 分布式版本管理器 windows环境下使用

    首先需要下载Git来安装  没有安装文件的小伙伴可以网盘下载——>   https://pan.baidu.com/s/1owwUItDri9skqYzOjzXLsw 之后安装Git  一路很顺 ...

  8. JS面试Q&A(续2): Rest parameter,Arrow function 等

    rest parameter 和 Destructuring assignment. function fun1(...theArgs) { console.log(theArgs.length);} ...

  9. Webdriver+Testng实现测试用例失败自动截图功能

    testng执行测试用例的时候,如果用例执行失败会自动截图,方便后续排查问题 1.首先定义一个截图类: package com.rrx.utils; import java.io.File;impor ...

  10. LSTM编程所用函数

    1.Round函数返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果.可是当保留位跟着的即使是5,有可能进位,也有可能舍去,机会各50% 2.python基础 (1)@property 特 ...