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. android之Itent.ACTION_PICK Intent.ACTION_GET_CONTENT妙用

    你是不是很多时候,想从弹出的电话本姓名列表中中查找到某个人,然后再获取该人的详细信息呢? 你是不是想选择从弹出的列表中选择一张图片,然后将其进行进一步的操作呢? 如果,你想,那你是不是很像知道,我们应 ...

  2. POJ 3287 (基础BFS) Catch That Cow

    这是做的第一道BFS,很基础很简单的题目 广度优先搜索算法如下:(用QUEUE)(1) 把初始节点S0放入Open表中:(2) 如果Open表为空,则问题无解,失败退出:(3) 把Open表的第一个节 ...

  3. [再做01背包] POJ 3624 Charm Bracelet

    接触动态规划的第一题是数塔问题,第二题就是01背包问题了. 当时看的懵懵懂懂,回过头来再看这道题还是非常简单的了. 用 dp[i][j] 表示取前i种物品,使它们总体积不超过j的最优取法取得的价值总和 ...

  4. iOS8 LaunchScreen.storyboard

    我目前的需求是需要将启动图片通过LaunchScreen.storyboard  来实现. 我首先想到的是创建一个Sb,使用自动布局来布局imageview,并设置如下图: 布局好之后,在Image里 ...

  5. github.io hexo 安装

    /***************************************************************** * github.io hexo 安装 * 说明: * 本文记录h ...

  6. Service完全解析(转)

    今天我们来讲一下Android中Service的相关内容. Service在Android中和Activity是属于同一级别上的组件,我们可以将他们认为是两个好哥们,Activity仪表不凡,迷倒万千 ...

  7. smarty 初始配置文件

    <?php define("ROOT",str_replace("\\","/",dirname(__FILE__)).'/'); r ...

  8. js模拟实现继承功能

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  9. ecshop 修改模板可输出php代码

    1.找到includes 文件夹下的 cls_template.php function fetch_str函数 2.只留下以下代码 function fetch_str($source) { if ...

  10. 2015-10-09 Fri 晴 加快进度看书

    最近老感觉每天不够用,每天7点起来,吃饭完了8点开始看书,不知道是我看书太慢了还是时间过得真的很快,不知不觉中午就到了.而这个时候我才看2章的内容,下午能多看3章内容.一本书也就一天的时候,而我现在还 ...