unity3d 本地数据存储

using UnityEngine;
using System.Collections;
//路径工具类
public class PathKit
{

    /** 后缀常量字符 */
    public const string SUFFIX = ".txt";
    const string PREFIX="file://";
    const string FORMAT=".unity3d";
    public static string RESROOT=Application.persistentDataPath+"/";

    public static string GetStreamingAssetsPath (string p_filename)
    {
        string _strPath = "";
        if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer )
            _strPath = "file://" + Application.streamingAssetsPath + "/" + p_filename + ".unity3d";
        else if (Application.platform == RuntimePlatform.Android )
            _strPath = Application.streamingAssetsPath + "/" + p_filename + ".unity3d";
        else if (  Application.platform == RuntimePlatform.OSXEditor ||  Application.platform == RuntimePlatform.IPhonePlayer)
            _strPath = "file://"+ Application.streamingAssetsPath + "/" + p_filename + ".unity3d";

        return _strPath;
    }    

    public static string GetOSDataPath (string p_filename)
    {
        string path;
        path = "";

        if (Application.platform == RuntimePlatform.OSXEditor)
            path = Application.persistentDataPath + p_filename;

        if (Application.platform == RuntimePlatform.IPhonePlayer)
            path = RESROOT + p_filename;

        if (Application.platform == RuntimePlatform.WindowsPlayer || Application.platform == RuntimePlatform.WindowsEditor)
            path = Application.dataPath +"/cache/"+ p_filename;    

        if (Application.platform == RuntimePlatform.Android)
            path =RESROOT + p_filename;

    //    Debug.LogWarning("===========path:"+path);
        return path;
    }

        public static string GetURLPath (string p_filename,bool needPreFix,bool needFormat)
    {
        string path;
        path = "";

        if (Application.platform == RuntimePlatform.OSXEditor)
            path = Application.persistentDataPath+"/" + p_filename;

        if (Application.platform == RuntimePlatform.IPhonePlayer)
            path = RESROOT + p_filename;

        if (Application.platform == RuntimePlatform.WindowsEditor)
            path = Application.dataPath +"/cache/"+ p_filename;    

            if (Application.platform == RuntimePlatform.WindowsPlayer)
            path = Application.dataPath +"/cache/"+ p_filename;        

        if (Application.platform == RuntimePlatform.Android)
            path = RESROOT + p_filename;

        if(needPreFix) path=PREFIX+path;
        if(needFormat) path=path+FORMAT;
        //Debug.LogWarning("===========path:"+path);
        return path;
    }

    public static string getFileName(string path)
    {

    string[] _list=    path.Split(new char[]{‘/‘});

    if(_list.Length>0)    return _list[_list.Length-1];
        else
            return "";

    }

    public static string getFileDir(string path)
    {
        path = path.Replace("\\","/");
        path = path.Substring(0,path.LastIndexOf("/"));
        return path;
    }

    public static void CreateDirIfNotExists(string path)
    {
        string dir = getFileDir(path);
        if(!System.IO.Directory.Exists(dir))
        {
            System.IO.Directory.CreateDirectory(dir);
        }
    }

}
 private void SaveFriendToLocal()
    {
        string cacheStr = "";//内容string path = PathKit.RESROOT + string.Format(CHAT_CACHE_DIR, UserId);
        FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
        StreamWriter sw = new StreamWriter(fs);
        sw.Flush();
        sw.BaseStream.Seek(0, SeekOrigin.Begin);
        sw.Write(cacheStr);
        sw.Close();
    }
 private void LoadFriendFromLocal()
    {
        try
        {
            string path = PathKit.RESROOT + string.Format(CHAT_CACHE_DIR,UserId);
            if (!File.Exists(path)) return;
            FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read);
            byte[] bytes = new byte[fs.Length];
            fs.Read(bytes, 0, (int)fs.Length);
            fs.Close();
            mCacheFriend = new List<string> ();string[] arr = Encoding.UTF8.GetString (bytes).Split (‘\n‘);
            for (int i = 0; i < arr.Length; i++) {
                string[] item = arr[i].Split (‘\t‘);
                mCacheFriend.Add (item[0]);
            }
        }
        catch (System.Exception e)
        {
            Debug.Log(e.Message);
        }
    }
时间: 2024-11-05 18:56:27

unity3d 本地数据存储的相关文章

cocos2d-html5开发之本地数据存储

做游戏时经常需要的一个功能呢就是数据的保存了,比如游戏最高分.得到的金币数.物品的数量等等,cocos2d-html5使用了html5,所以html5的数据保存方法是对引擎可用的: html5本地数据存储是使用js对数据进行操作,html5 对数据的存储提供了两个方法: sessionStorage - 只对本次会话保留数据 localStorage - 长时间保留数据 关于这个sessionStorage只在浏览器打开进行会话时可用,在游戏中没有测试,用法是和localStorage方法相同的

IOS中NSUserDefaults的用法(轻量级本地数据存储)

iOS数据保存 IOS中NSUserDefaults的用法(轻量级本地数据存储) IOS中NSUserDefaults的用法(轻量级本地数据存储),布布扣,bubuko.com

Unity本地数据存储---Sqlite和JSON

2014-04-30更新 剔除了使用网络上烂大街的SQLite使用方法(原因android下无法读取数据),使用libSQLite3.so,通过DLLImport,在C#代码里直接调用C接口 这种原生调用SQLite的方式,我在pc.android上亲测无误,ios没测过,但是stackoverflow上有兄弟试过,没问题.园子的朋友如果可以测IOS的,欢迎提供结果 基本思路,游戏基础配置数据,比如怪物的属性.装备模板属性.关卡怪物等,使用SQLite(Unity插件SQLiteUnityKit

IOS NSUserDefaults-轻量级本地数据存储

IOS NSUserDefaults-轻量级本地数据存储 IOS 针对用户数据持久化处理提供了多种处理方式:NSUserDefaults.plist 以及 sqlite3 数据库 都是很不错的选择! NSUserDefaults 是一种轻量级本地数据存储,操作方便,但仅支持Bool.Float.NSInteger.Object.Double.Url 这六种数据类型的存储 NSUserDefaults 提供了添加.读取以及移除等方法,供开发者调用,具体示例如下: GNSUserDefaults.h

html5 之本地数据存储

HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 cookie与webStorage的对比: cookie的缺陷是非常明显的 1. 数据大小:作为存储容器,cookie的大小限制在4KB左右这是非常坑爹的,尤其对于现在复杂的业务逻辑需求,4KB的容量除了存储一些配置字段还简单单值信息,对于绝大部分开发者来说真的不知指望什么了. 2. 安全性问题:由于在HTTP请求中的co

CoreData 本地数据存储

在iOS开发中,我们会用到本地数据文件的存储,一般有属性列表Plist,SQLite,CoreDate以及沙盒文件等方式,现在归纳一下CoreData. CoreData是苹果iOS 5后提供的本地文件存储框架,利用CoreData可以方便创建关系映射,进行数据CRUD(增删改查)操作. <注意>使用CoreData处理数据务必先引入CoreData框架包:CoreData.framework: 1.创建CoreData文件的两种方式 (a).在使用CoreData时我们需要进行CoreDat

iOS开发——数据持久化&amp;使用NSUserDefaults来进行本地数据存储

使用NSUserDefaults来进行本地数据存储 NSUserDefaults适合存储轻量级的本地客户端数据,比如记住密码功能,要保存一个系统的用户名.密码.使用NSUserDefaults是首选.下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息. 一般来说本地存储数据我们还可以是用SQlite数据库,或者使用自己建立的plist文件什么的,但这还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取就

IOS中NSUserDefaults的用法(轻量级本地数据存储) (转)

NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefaults是首选.下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯. 因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取就可以了. NSUserDefaults支持的数据格式有:NSNumber(Integer.Float

理解 Android 本地数据存储 API

利用首选项.SQLite 和内部及外部内存 API 对于需要跨应用程序执行期间或生命期而维护重要信息的应用程序来说,能够在移动设备上本地存储数据是一种非常关键的功能.作为一名开发人员,您经常需要存储诸如用户首选项或应用程序配置之类的信息.您还必须根据一些特征(比如访问可见性)决定是否需要涉及内部或外部存储器,或者是否需要处理更复杂的.结构化的数据类型.跟随本文学习 Android 数据存储 API,具体来讲就是首选项.SQLite 和内部及外部内存 API. http://www.ibm.com