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. svn备份脚 本

    一直用这套脚本备份,脚本主体虽不是原创,但是从网上得到后因为不能运行也进行了些修改,前两天看到有人问关于SVN备份的问题,今天又把脚本整理了一下,解决了不能循环备份多个配置库的问题.希望对大家有所帮助 ...

  2. org.hibernate.AnnotationException: No identifier specified for entity: cn.itcast.domain.Counter

    因为我的hibernate映射表没有主键所以报这个错. 解决方案是: 1.创建一个主键 2.hibernate处理无主键的表的映射问题,其实很简单,就是把一条记录看成一个主键,即组合主键<com ...

  3. web前端调试工具

    1.firebug入门指南 http://www.ruanyifeng.com/blog/2008/06/firebug_tutorial.html 2. Console命令详解,让调试js代码变得更 ...

  4. hibernate中使用fetch来决策性能方案

    什么时候用子查询,或者连接查询 一般多个数据的对应用子查询,单一行的数据用连接 (若要查询每个学生分别学了什么课程 ,若要fetch=join.fetch=select) 则是这种情况 Hiberna ...

  5. Cython:基础教程(1) 语法

    1 变量定义 http://docs.cython.org/src/reference/language_basics.html http://blog.csdn.net/i2cbus/article ...

  6. ecshop 优化_将商品详情页goods.php重命名为shangpin.php

    有人说,将商品详情页的文件名 goods.php 改一个名字,对百度收录会有帮助,也许吧,这里不讨论是否有帮助,这里只讲解如何重命名. 例如:我们将 goods.php 改为 shangpin.php ...

  7. 【转】iOS开发-Protocol协议及委托代理(Delegate)传值

    原文网址:http://www.cnblogs.com/GarveyCalvin/p/4210828.html 前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来 ...

  8. source 命令

    作用: 当我修改了/etc/profile文件,我想让它立刻生效,而不用重新登录:这时就想到用source命令,如:source /etc/profile 介绍:source命令也称为“点命令”,也就 ...

  9. Team Foundation Server 2010下载安装配置方法

    一.Team Foundation Server 2010下载: ed2k://|file|cn_visual_studio_team_foundation_server_2010_x86_x64_d ...

  10. JQUERY EASYUI 验证框(VALIDATEBOX)用法

    Query EasyUI 验证框(ValidateBox)在表单的验证方面给我们提供了很方便的方法,下面来介绍一下验证框(ValidateBox)的详细用法(查看演示):HTML 代码 <inp ...