Unity3D Persistent Storage
【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的更多相关文章
- Exception loading sessions from persistent storage
严重: Exception loading sessions from persistent storage java.io.EOFException 删除Tomcat里面的work/Catalina ...
- Exception loading sessions from persistent storage 这个问题的解决
现在经常在做一个项目时重启时会报: 严重: Exception loading sessions from persistent storage的问题. 这个问题的原因是tomcat的session持 ...
- web后台获取不到session中的值(loading sessions from persistent storage),后改用JS传值
线上的程序似乎从session中取不到domain数据,重启了一下tomcat查看log日志发现,居然有报错.错误信息如下 22-Sep-2016 00:52:16.562 SEVERE [local ...
- 解决tomcat重启时报严重: Exception loading sessions from persistent storage的问题
很多项目在重启时会报:严重: Exception loading sessions from persistent storage的问题.该问题的原因是tomcat的session持久化机制引起的,t ...
- 转:Exception loading sessions from persistent storage
直用tomcat一段时间都正常无事,最近一次启动tomcat就发生以下异常: 严重: IOException while loading persisted sessions: java.io.EOF ...
- eclipse启动Tomcat时报错:严重: Exception loading sessions from persistent storage
我的项目工程是Spring+hibernate+structs 1.0,最近启动tomcat时多次遇到如下异常: 严重: IOException while loading persisted se ...
- 严重: Exception loading sessions from persistent storage
2011-11-24 10:05:00| 分类: java学习|举报|字号 订阅 当tomcat启动的时候出现下面错误: [ERROR] org.apache.catalina.sessio ...
- [Docker] Create Docker Volumes for Persistent Storage
Docker containers are stateless by default. In order to persist filesystem changes, you must use doc ...
- 严重: Exception loading sessions from persistent storage Java.io.EOFException
tomcat启动时报此异常,但web页均能正常运行:对程序影响不大. /*具体原因时tomcat--work--(你当前运行的工程名)--session.ser*/删除即可解决 分析: EOFExce ...
随机推荐
- ACM - ICPC World Finals 2013 F Low Power
原题下载:http://icpc.baylor.edu/download/worldfinals/problems/icpc2013.pdf 题目翻译: 问题描述 有n个机器,每个机器有2个芯片,每个 ...
- Bootstrap_CSS全局样式
一.HTML5 文档类型 Bootstrap 使用到的某些 HTML 元素和 CSS 属性需要将页面设置为 HTML5 文档类型.在你项目中的每个页面都要参照下面的格式进行设置. <!DOCTY ...
- python-unexpected content storage modification出错
提示以上错误,然后在pycharm中的文件内容和实际内容不一致 去我的文档-.PyCharm-system_cache,全部删除
- Debian 如何更改hdmi接口输出的分辨率
1. 先删除无用的文件: a) Boot/boot.src b) Boot/script.bin 2. 打开boot/script.fex,找到disp_init节点 a) 将screenX_outp ...
- Jquery源码中的Javascript基础知识(三)
这篇主要说一下在源码中jquery对象是怎样设计实现的,下面是相关代码的简化版本: (function( window, undefined ) { // code 定义变量 jQuery = fun ...
- php多种实例理解无限极分类
- [转]就这样,创建了自己的运行时共享库(RSL)
原文地址:http://riaoo.com/?p=1405 博客园的下载地址(版权归原作者) http://files.cnblogs.com/tianlanliao/CustomRSL.zip 创建 ...
- Android的IPC机制(一)——AIDL的使用
综述 IPC(interprocess communication)是指进程间通信,也就是在两个进程间进行数据交互.不同的操作系统都有他们自己的一套IPC机制.例如在Linux操作系统中可以通过管道. ...
- myeclipse 10 优化
一.Myeclipse10修改字体 MyEclipse10是基于Eclipse3.7内核,但在Eclipse的Preferences-〉general-〉 Appearance->Colors ...
- netbeans中wicket插件对应的jQuery-ui版本
在netbean里使用wicket,我们经常习惯使用netbeans自带的wicket插件直接安装wicket,但是因为netbean上的 wicket插件版本比较老,使得我们很多新的第三方wicke ...