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 ...
随机推荐
- Python3 学习第十一弹: 模块学习四之sys库
sys模块 提供一些与python解释器关系紧密的变量和函数 1> argv 命令行参数 通过命令行可以向python传输参数 2> exit([arg]) 程序退出,可以返回给命令行一个 ...
- 解决eclipse-helios中Errors running builder JavaScript Validator的问题
原文:http://blog.ywxyn.com/index.php/archives/713 解决eclipse-helios中Errors running builder JavaScript V ...
- Qt之自定义搜索框
简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 方案一:调用QLineEdit现有接口 void ...
- 以一个上传文件的例子来说 DistributedFileSystem
public class UploadAndDown { public static void main(String[] args) { UploadAndDown uploadAndDown = ...
- spring事务传播属性与隔离级别
一.Propagation (事务的传播属性) Propagation : key属性确定代理应该给哪个方法增加事务行为.这样的属性最重要的部份是传播行为. 有以下选项可供使用: PROPAGATIO ...
- Android AIDL自动生成Java文件测试
/******************************************************************************** * Android AIDL自动生成 ...
- ecshop显示所有分类树栏目
1.找到 category.php 和goods.php 两个文件修改: $smarty->assign('categories', get_categories_tree(0)); // 分类 ...
- Java条件语句之 switch
当需要对选项进行等值判断时,使用 switch 语句更加简洁明了.例如:根据考试的名次,给予前 4 名不同的奖品.第一名,奖励笔记本一台:第二名,奖励 IPAD 2 一个:第三名,奖励移动电源一个:最 ...
- 脚本乐园 Shell中命令行选项和参数的处理
在Linux的Shell中怎样处理tail -n 10 access.log这样的命令行选项呢?这是被别人问起的一个问题,好好学习了一下,进行总结如下:在bash中,可以用以下三种方式来处理命令行参数 ...
- 可以用google了
半年都上不了google,现在可以了, 哈哈,支持自动更新, 有时候用google还是很不错的,尤其是英文搜索.