Unity3D Persistent Storage

1、PlayerPrefs类以键值对的形式来提供PersistentStorage能力。提供小额存储能力。(做成sst可以提供大规模数据存储)

2、PlayerPrefs删除数据。

3、使用PlayerPrefs实例。

     void OnGUI()
{
GUILayout.BeginHorizontal ("box",GUILayout.Width()); GUILayout.Label ("请输入姓名");
username = GUILayout.TextField(username, );
GUILayout.EndHorizontal (); GUILayout.BeginHorizontal ("box");
GUILayout.Label ("请输入号码");
usernumber = GUILayout.TextField(usernumber, );
GUILayout.EndHorizontal (); GUILayout.BeginHorizontal ("box");
GUILayout.Label ("请输入年龄");
userage = GUILayout.TextField(userage, );
GUILayout.EndHorizontal (); GUILayout.BeginHorizontal ("box");
GUILayout.Label ("请输入身高");
userheight = GUILayout.TextField(userheight, );
GUILayout.EndHorizontal (); if(GUILayout.Button ("提交数据"))
{
showInfo = true;
//持久化保存数据
PlayerPrefs.SetString("username",username);
PlayerPrefs.SetString("usernumber",usernumber);
PlayerPrefs.SetInt("userage",int.Parse(userage));
PlayerPrefs.SetFloat("userheight",float.Parse(userheight));
} if(GUILayout.Button ("取消查看"))
{
showInfo = false;
//删除所有持久化对应值
PlayerPrefs.DeleteAll();
} if(showInfo)
{
//将信息显示出来,如果找不到对应的值将信息默认值
GUILayout.Label ("输入的姓名为:" + PlayerPrefs.GetString("username","姓名默认值"));
GUILayout.Label ("输入的号码为:" + PlayerPrefs.GetString("usernumber","号码默认值"));
GUILayout.Label ("输入的年龄为:" + PlayerPrefs.GetInt("userage",).ToString());
GUILayout.Label ("输入的身高为:" + PlayerPrefs.GetFloat("userheight",0.0f).ToString());
}

4、使用流进行文件写入操作。

     void Start ()
{
//创建文件,共写入3次数据
CreateFile(Application.dataPath,"FileName","TestInfo0");
CreateFile(Application.dataPath,"FileName","TestInfo1");
CreateFile(Application.dataPath,"FileName","TestInfo2");
} /**
* path:文件创建目录
* name:文件的名称
* info:写入的内容
*/
void CreateFile(string path,string name,string info)
{
//文件流信息
StreamWriter sw;
FileInfo t = new FileInfo(path+"//"+ name);
if(!t.Exists)
{
//如果此文件不存在则创建
sw = t.CreateText();
}
else
{
//如果此文件存在则打开
sw = t.AppendText();
}
//以行的形式写入信息
sw.WriteLine(info);
//关闭流
sw.Close();
//销毁流
sw.Dispose();
}

5、使用流进行文件读出操作。

     void Start ()
{
//读取文件
ArrayList info = LoadFile(Application.dataPath,"FileName"); //遍历文本信息,将其打印出来
foreach(string str in info)
{
Debug.Log(str);
}
} /**
* path:读取文件的路径
* name:读取文件的名称
*/
ArrayList LoadFile(string path,string name)
{
//使用流的形式读取
StreamReader sr =null;
try{
sr = File.OpenText(path+"//"+ name);
}catch(Exception e)
{
//路径与名称未找到文件则直接返回空
return null;
}
string line;
ArrayList arrlist = new ArrayList();
while ((line = sr.ReadLine()) != null)
{
//一行一行的读取
//将每一行的内容存入数组链表容器中
arrlist.Add(line);
}
//关闭流
sr.Close();
//销毁流
sr.Dispose();
//将数组链表容器返回
return arrlist;
}

6、应用程序状态。

7、使用Application.LoadLevel()可以切换场景,场景ID在File->BukldSetting中定义。

     void OnGUI()
{ GUILayout.Label("当前场景名称为:"+Application.loadedLevelName);
if(GUILayout.Button("点击进入场景Scene1"))
{
Application.LoadLevel ("Scene1");
}
}

8、使用Application.CaptureScreenshot()可以截图。

     void OnGUI()
{ GUILayout.Label("当前场景名称为:"+Application.loadedLevelName); if(GUILayout.Button("点击按钮截图"))
{
Application.CaptureScreenshot("name.png");
}
}

9、Application.OpenURL()方法可以打开网页。会调起第三方应用打开网页。

10、Application.Quit()可退出当前游戏。

11、使用AssertDatabase来加载资源。

     //贴图
Texture2D texture; void Start()
{
//从项目资源视图中加载资源
texture = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/Texture/0.png", typeof(Texture2D));
}
void OnGUI()
{
//渲染资源
GUI.DrawTexture(new Rect(,,texture.width,texture.height),texture); }

12、动态创建Material,存储在磁盘上。

     //贴图对象
Texture2D texture = null;
void Start()
{
//创建一个材质,为默认着色器
Material mat = new Material (Shader.Find("Transparent/Diffuse"));
//在项目资源视图中加载贴图资源
texture = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/Texture/0.png", typeof(Texture2D));
//将贴图资源赋予创建的材质
mat.mainTexture = texture;
//将材质添加至项目资源视图中
AssetDatabase.CreateAsset(mat, "Assets/mat.mat");
//创建一个立方体对象
GameObject objCube = GameObject.CreatePrimitive(PrimitiveType.Cube);
//将创建的材质赋予这个立方体对象
objCube.renderer.material = mat;
}

13、使用AssetDatabase.CreateFolder创建文件夹。

     //记录添加文件夹的次数
int addId = ;
void OnGUI()
{
if(GUILayout.Button("添加一个新文件夹"))
{
//得到当前文件夹的名称
string folder = "folderName"+addId;
//创建一个新文件夹
AssetDatabase.CreateFolder("Assets", "folderName"+addId);
//创建一个材质,为默认着色器
Material mat = new Material (Shader.Find("Transparent/Diffuse"));
//将材质添加至新文件夹中
AssetDatabase.CreateAsset(mat, "Assets/"+folder+"/mat.mat"); addId++;
}
}

14、AssetDatabase.CopyAsset,AssetDatabase.MoveAsset分别用于拷贝和移动磁盘内容。

     void Start()
{
//复制资源
AssetDatabase.CopyAsset("Assets/folderName1/mat1.mat", "Assets/folderName2/mat1.mat");
//移动资源
AssetDatabase.MoveAsset("Assets/folderName0/mat0.mat", "Assets/folderName2/mat0.mat");
}

15、AssetDatabase.DeleteAsset删除磁盘资源。

     void Start()
{
//删除资源
AssetDatabase.DeleteAsset("Assets/folderName2/mat1.mat");
//刷新资源视图
AssetDatabase.Refresh();
}

16、OnMouseDrag可以监听到鼠标拖拽消息。

     void OnMouseDrag ()
{
Debug.Log("鼠标拖动该模型区域时");
transform.position += Vector3.right * Time.deltaTime*Input.GetAxis ("Mouse X");
transform.position += Vector3.up * Time.deltaTime*Input.GetAxis ("Mouse Y");
}

17、ScreenPointToRay可以将屏幕坐标转换为世界坐标。

         //鼠标按下左键
if(Input.GetMouseButtonDown())
{
//创建一条射线以摄像机为原点
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
//射线碰撞到游戏地形时
if (Physics.Raycast(ray, out hit))
{
//创建立方体
GameObject objCube = GameObject.CreatePrimitive(PrimitiveType.Cube);
objCube.transform.position = hit.point; }
}

Unity3D Persistent Storage的更多相关文章

  1. Exception loading sessions from persistent storage

    严重: Exception loading sessions from persistent storage java.io.EOFException 删除Tomcat里面的work/Catalina ...

  2. Exception loading sessions from persistent storage 这个问题的解决

    现在经常在做一个项目时重启时会报: 严重: Exception loading sessions from persistent storage的问题. 这个问题的原因是tomcat的session持 ...

  3. web后台获取不到session中的值(loading sessions from persistent storage),后改用JS传值

    线上的程序似乎从session中取不到domain数据,重启了一下tomcat查看log日志发现,居然有报错.错误信息如下 22-Sep-2016 00:52:16.562 SEVERE [local ...

  4. 解决tomcat重启时报严重: Exception loading sessions from persistent storage的问题

    很多项目在重启时会报:严重: Exception loading sessions from persistent storage的问题.该问题的原因是tomcat的session持久化机制引起的,t ...

  5. 转:Exception loading sessions from persistent storage

    直用tomcat一段时间都正常无事,最近一次启动tomcat就发生以下异常: 严重: IOException while loading persisted sessions: java.io.EOF ...

  6. eclipse启动Tomcat时报错:严重: Exception loading sessions from persistent storage

    我的项目工程是Spring+hibernate+structs  1.0,最近启动tomcat时多次遇到如下异常: 严重: IOException while loading persisted se ...

  7. 严重: Exception loading sessions from persistent storage

    2011-11-24 10:05:00|  分类: java学习|举报|字号 订阅     当tomcat启动的时候出现下面错误: [ERROR] org.apache.catalina.sessio ...

  8. [Docker] Create Docker Volumes for Persistent Storage

    Docker containers are stateless by default. In order to persist filesystem changes, you must use doc ...

  9. 严重: Exception loading sessions from persistent storage Java.io.EOFException

    tomcat启动时报此异常,但web页均能正常运行:对程序影响不大. /*具体原因时tomcat--work--(你当前运行的工程名)--session.ser*/删除即可解决 分析: EOFExce ...

随机推荐

  1. Machine Learning for hackers读书笔记_一句很重要的话

    为了培养一个机器学习领域专家那样的直觉,最好的办法就是,对你遇到的每一个机器学习问题,把所有的算法试个遍,直到有一天,你凭直觉就知道某些算法行不通.

  2. DELPHI 里面的迭代

    迭代(Iiterator)的作用:遍历一个集合(Collections)的每一个元素(item). delphi 2005之后新加入一种 for .. in .. 遍历语句,支持String,Set, ...

  3. NBUT 1122 Shameimaru's Candid Camera(水)

    题意: 给n*m个格子,初始时每个格子中有个数值为0,部分格子中含有炸弹,每个炸弹爆炸可以将周围的8个非炸弹格子中的数值加1,求全部炸弹炸完后那些非0且非炸弹格子中的数是多少. 思路: 另开一个矩阵, ...

  4. marginCollapse之兄弟关系的DIV

    废话不说,直接上图 基本代码如下: 效果图如下: 给两个div分别加marginBottom和marginTop看一下效果 实际效果如下: 我们可以看出两个div之间的距离并不是50+50,而是只显示 ...

  5. ORACLE 分区

    在建设数据仓库过程中,经常会有大量数据,短时间内表中数据量有限,查询性能还可以,但随着时间的延长,表中数据量迅速增加,查询速度就会变慢,性能下降,这时就要考虑对表进行分区. 一.oracle的分区 当 ...

  6. 使用sqlldr将文件中的数据导入到数据库

    1.创建数据文件: ?如,在D:\创建 zhaozhenlong.txt 文件,文件内容为: 11,12,1321,22,2331,32,33 2.创建控制文件: 如,在D:\创建 zhaozhenl ...

  7. 两天三场Java实习生面试总结

    Java 关键字(如abstract)[详解] String[相关面试题] String.StringBuffer.StringBuilder区别 String中有没有使一个字符串反转的方法 线程的实 ...

  8. JBPM4入门——9.自动节点单线执行

    JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流程图的插件 JBPM4入门——3.JBPM4开发环境的搭建 JBPM4入门—— ...

  9. uglifyjs使用

    1.安装Nodejs:去这里下载并安装. 2.打开cmd,运行npm,node应该会有输出东西 3.如果在window上运行Node.js的npm报Error: ENOENT, stat 'C:\Us ...

  10. 堪称最好的A*算法

    原文地址:http://theory.stanford.edu/~amitp/GameProgramming/ 相关链接:http://www-cs-students.stanford.edu/%7E ...