Unity3D引擎制作蓝叠安卓模拟器数据包游戏时,无法打数据包吗?

程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Unity3D研究院之在Unity中打开第三方数据库配合Android开发(三十二)
Unity3D研究院之在Unity中打开第三方数据库配合Android开发(三十二)
围观27512次
编辑日期: 字体:
如果大家对Unity中如何使用数据库还不是很了解那么请看我之前的这篇文章。本篇文章我们讨论如何在Unity中打开一个第三方数据库配合Android与编辑器进行同步开发。如下图所示,这个是我目前工程的结构,为了方便调试MOMO使用预定义标签将编辑器与Android平台区分开,方便编辑器与Android平台同时调试。
下图如果看的不清楚,点击图片可查看大图。 不仅在Unity编辑器中可以显示数据库读取的内容,直接编译在真机中也可以显示数据库读取的内容。
按照上图所示我们把第三方数据库放在Plugins-&Android-&assets中,切记必须放在这里,否无无效,然后是代码。这个第三方数据库是MOMO以前做测试一个号码归属地的时候制作的。所以数据库的内容还是比较大的,蛤蛤。
DbAccess.cs
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
using UnityEngine;&using System;using System.Collections;using Mono.Data.Sqlite;&public class DbAccess&{&&&&&private SqliteConnection dbConnection;&&&&&private SqliteCommand dbCommand;&&&&&private SqliteDataReader reader;&&&&&public DbAccess (string connectionString)&&&&&{&&&&&&&&&OpenDB (connectionString);&&&&&}&&&&public DbAccess () {& }&&&&&public void OpenDB (string connectionString)&&&&&{
{&&&&&&&& dbConnection = new SqliteConnection (connectionString);&&&&&&&
dbConnection.Open ();&&&&&&&
Debug.Log ("Connected to db");
}&&&& catch(Exception e)&&&& {&&&&&&
string temp1 = e.ToString();&&&&&&
Debug.Log(temp1);&&&& }&&&&&}&&&&&public void CloseSqlConnection ()&&&&&{&&&&&&&&&if (dbCommand != null) {&&&&&&&&&&&&&dbCommand.Dispose ();&&&&&&&&&}&&&&&&&&&dbCommand = null;&&&&&&&&&if (reader != null) {&&&&&&&&&&&&&reader.Dispose ();&&&&&&&&&}&&&&&&&&&reader = null;&&&&&&&&&if (dbConnection != null) {&&&&&&&&&&&&&dbConnection.Close ();&&&&&&&&&}&&&&&&&&&dbConnection = null;&&&&&&&&&Debug.Log ("Disconnected from db.");&&&&&}&&&&&public SqliteDataReader ExecuteQuery (string sqlQuery)&&&&&{&&&&&&&&&dbCommand = dbConnection.CreateCommand ();&&&&&&&&&dbCommand.CommandText = sqlQuery;&&&&&&&&&reader = dbCommand.ExecuteReader ();&&&&&&&&&return reader;&&&&&}&&&&&public SqliteDataReader ReadFullTable (string tableName)&&&&&{&&&&&&&&&string query = "SELECT * FROM " + tableName;&&&&&&&&&return ExecuteQuery (query);&&&&&}&&&&&public SqliteDataReader InsertInto (string tableName, string[] values)&&&&&{&&&&&&&&&string query = "INSERT INTO " + tableName + " VALUES (" + values[0];&&&&&&&&&for (int i = 1; i & values.Length; ++i) {&&&&&&&&&&&&&query += ", " + values[i];&&&&&&&&&}&&&&&&&&&query += ")";&&&&&&&&&return ExecuteQuery (query);&&&&&}& public SqliteDataReader UpdateInto (string tableName, string []cols,string []colsvalues,string selectkey,string selectvalue) {&
string query = "UPDATE "+tableName+" SET "+cols[0]+" = "+colsvalues[0];&
for (int i = 1; i & colsvalues.Length; ++i) {&
query += ", " +cols[i]+" ="+ colsvalues[i];
query += " WHERE "+selectkey+" = "+selectvalue+" ";&
return ExecuteQuery (query); }& public SqliteDataReader Delete(string tableName,string []cols,string []colsvalues) {
string query = "DELETE FROM "+tableName + " WHERE " +cols[0] +" = " + colsvalues[0];&
for (int i = 1; i & colsvalues.Length; ++i) {&
&&&&query += " or " +cols[i]+" = "+ colsvalues[i];
Debug.Log(query);
return ExecuteQuery (query); }&&&&&public SqliteDataReader InsertIntoSpecific (string tableName, string[] cols, string[] values)&&&&&{&&&&&&&&&if (cols.Length != values.Length) {&&&&&&&&&&&&&throw new SqliteException ("columns.Length != values.Length");&&&&&&&&&}&&&&&&&&&string query = "INSERT INTO " + tableName + "(" + cols[0];&&&&&&&&&for (int i = 1; i & cols.Length; ++i) {&&&&&&&&&&&&&query += ", " + cols[i];&&&&&&&&&}&&&&&&&&&query += ") VALUES (" + values[0];&&&&&&&&&for (int i = 1; i & values.Length; ++i) {&&&&&&&&&&&&&query += ", " + values[i];&&&&&&&&&}&&&&&&&&&query += ")";&&&&&&&&&return ExecuteQuery (query);&&&&&}&&&&&public SqliteDataReader DeleteContents (string tableName)&&&&&{&&&&&&&&&string query = "DELETE FROM " + tableName;&&&&&&&&&return ExecuteQuery (query);&&&&&}&&&&&public SqliteDataReader CreateTable (string name, string[] col, string[] colType)&&&&&{&&&&&&&&&if (col.Length != colType.Length) {&&&&&&&&&&&&&throw new SqliteException ("columns.Length != colType.Length");&&&&&&&&&}&&&&&&&&&string query = "CREATE TABLE " + name + " (" + col[0] + " " + colType[0];&&&&&&&&&for (int i = 1; i & col.Length; ++i) {&&&&&&&&&&&&&query += ", " + col[i] + " " + colType[i];&&&&&&&&&}&&&&&&&&&query += ")";&&&&&&&&&return ExecuteQuery (query);&&&&&}&&&&&public SqliteDataReader SelectWhere (string tableName, string[] items, string[] col, string[] operation, string[] values)&&&&&{&&&&&&&&&if (col.Length != operation.Length || operation.Length != values.Length) {&&&&&&&&&&&&&throw new SqliteException ("col.Length != operation.Length != values.Length");&&&&&&&&&}&&&&&&&&&string query = "SELECT " + items[0];&&&&&&&&&for (int i = 1; i & items.Length; ++i) {&&&&&&&&&&&&&query += ", " + items[i];&&&&&&&&&}&&&&&&&&&query += " FROM " + tableName + " WHERE " + col[0] + operation[0] + "'" + values[0] + "' ";&&&&&&&&&for (int i = 1; i & col.Length; ++i) {&&&&&&&&&&&&&query += " AND " + col[i] + operation[i] + "'" + values[0] + "' ";&&&&&&&&&}&&&&&&&&&return ExecuteQuery (query);&&&&&}&}
然后是Test.cs直接把它挂在摄像机对象身上。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
using UnityEngine;using System.Collections;using System.Collections.Generic;using System.IO;using Mono.Data.Sqlite;public class Test&&:MonoBehaviour{ //这三个是从数据库中取得的字段内容 string&&number = "null"; string&&city= "null"; string&&location = "null";& //处理在Android中显示中文 public GUISkin skin;& void Start () {&
loadSQL (); }& void loadSQL () {&//如果运行在编辑器中#if UNITY_EDITOR
//通过路径找到第三方数据库
string appDBPath = Application.dataPath + "/Plugins/Android/assets/" + "location.db";
DbAccess db = new DbAccess("URI=file:" + appDBPath);//如果运行在Android设备中#elif UNITY_ANDROID&
//将第三方数据库拷贝至Android可找到的地方
string appDBPath = Application.persistentDataPath + "/" + "location.db";&
//如果已知路径没有地方放数据库,那么我们从Unity中拷贝
if(!File.Exists(appDBPath))&
//用www先从Unity中下载到数据库
&&&&WWW loadDB = new WWW("jar:file://" + Application.dataPath + "!/assets/" + "location.db"); &
//拷贝至规定的地方
&&&&File.WriteAllBytes(appDBPath, loadDB.bytes);&
//在这里重新得到db对象。
DbAccess db = new DbAccess("URI=file:" + appDBPath);&#endif &
using (SqliteDataReader sqReader = db.SelectWhere("location_date",new string[]{"number","city","location"},new string[]{"_id"},new string[]{"="},new string[]{"25"}))
while (sqReader.Read())&&&&
&&//从数据库中找到对应字段
&&number =&&sqReader.GetString(sqReader.GetOrdinal("number"));
&&city =&&sqReader.GetString(sqReader.GetOrdinal("city"));
&&location = sqReader.GetString(sqReader.GetOrdinal("location")) ;
Debug.Log("number =" + number + " city =" + city + " location =" + location );&&&&&
sqReader.Close();
db.CloseSqlConnection();& }& void OnGUI() {
GUI.skin = skin;&
GUILayout.Box("number =" + number);
GUILayout.Box("city =" + city);
GUILayout.Box("location =" + location); }&}
上面代码中我们使用到了预定于标签,用于编译时区分游戏平台与版本。这么一来我们既可以在编辑器中操作数据库也可以在Android中操作数据库一举两得,主要是是Android平台比较特殊,不能从Unity的Assets资源路径中读取二进制文件。说道二进制文件,这里不仅读取第三方数据库还可以读取其它文件,二进制文件都可以读取,比如文本文件、图片、资源等等。
需要注意的是你得把你的二进制文件放在Plugins-&Android-&assets中,然后根据下面的路径就可以在Android中读取。
string Path
= jar:file://” + Application.dataPath + “!/assets/” + “你的文件“;
另外,使用这种方法读取地方放数据库后,是可以继续向数据库执行插入、删除、修改 、查询、等操作,用起来还是比较方便的。
Unity预定义标签的种类还有很多,不仅可以区分平台还可以区分版本。
UNITY_EDITOR
Define for calling Unity Editor scripts from your game code.
UNITY_STANDALONE_OSX
Platform define for compiling/executing code specifically for Mac OS (This includes Universal, PPC and Intel architectures).
UNITY_DASHBOARD_WIDGET
Platform define when creating code for Mac OS dashboard widgets.
UNITY_STANDALONE_WIN
Use this when you want to compile/execute code for Windows stand alone applications.
UNITY_WEBPLAYER
Platform define for web player content (this includes Windows and Mac Web player executables).
Platform define for compiling/executing code for the Wii console.
UNITY_IPHONE
Platform define for compiling/executing code for the iPhone platform.
UNITY_ANDROID
Platform define for the Android platform.
Platform define for running PlayStation 3 code.
UNITY_XBOX360
Platform define for executing Xbox 360 code.
UNITY_NACL
Platform define when compiling code for Google native client (this will be set additionally to UNITY_WEBPLAYER).
UNITY_FLASH
Platform define when compiling code for Adobe Flash.
Note: These defines were introduced at version 3.0.
Also you can compile code selectively depending on the version of the engine you are working on. Currently the supported ones are:
Platform define for the major version of Unity 2.6.
UNITY_2_6_1
Platform define for specific version 1 from the major release 2.6.
Platform define for the major version of Unity 3.0.
UNITY_3_0_0
Platform define for the specific version 0 of Unity 3.0.
Platform define for major version of Unity 3.1.
Platform define for major version of Unity 3.2.
Platform define for major version of Unity 3.3.
Platform define for major version of Unity 3.4.
Platform define for major version of Unity 3.5.&
详细内容可以查看官网
用法就不解释了,地球人都知道。
雨松MOMO希望和大家一起进步,加油~~~最后文本的源码下载:
雨松MOMO祝大家学习愉快,哇咔咔,晚安啦啦啦~~
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!总部:北京市顺义区南法信旭辉空港中心1-703
电话:010-
备案号:京ICP备号-1相关文章推荐
转载自:/article/715
最近项目进入收尾阶段,之前对项目做了很多优化,mesh合并 ,减少DrawCall和模型骨骼以及物理计算,合并材质...
最近项目进入收尾阶段,之前对项目做了很多优化,mesh合并 ,减少DrawCall和模型骨骼以及物理计算,合并材质球,优化代码等等,在IOS上还好,但是Android上,试过几款手机,从低端到高端,发...
最近项目进入收尾阶段,之前对项目做了很多优化,mesh合并 ,减少DrawCall和模型骨骼以及物理计算,合并材质球,优化代码等等,在IOS上还好,但是Android上,试过几款手机,从低端到高端,发...
最近项目进入收尾阶段,之前对项目做了很多优化,mesh合并 ,减少DrawCall和模型骨骼以及物理计算,合并材质球,优化代码等等,在IOS上还好,但是Android上,试过几款手机,从低端到高端,发...
降低DrawCall的方法:1.对图集的有效管理,按功能模块划分,相同模块下的图片资源放在一张图集中,公共部分的图片资源放在一起,合理的管理既能适当降低I/O操作,又能适当减少DrawCall(原则是...
本文固定链接: /?p=6819
转载请注明: 游戏开发 日 于 游戏开发网-最好的游戏编程开发技术网站! 发表...
转载自羽化
http://blog.csdn.net/libeifs/article/details/6612919
Unity3D 3.3.0
AdMob一定要把游戏的名字改成unitypackage包名的最终发布的数据包,但unitypackage包名可以被修改。Unity也用于unitypackage,其中只有AndroidManifes...
前几天由于项目需要,要搞定在游戏中添加广告的方法,在U吧中搜到了这篇文章,
unity3d开发的android应用中加入AD系统的具体步骤
进而获得首发出处
http://tank2308...
他的最新文章
讲师:董晓杰
讲师:姚远
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Unity3D手机游戏开发_百度百科
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
Unity3D手机游戏开发
《Unity3D手机游戏开发》是2013年清华大学出版社出版的图书,作者是金玺曾。
Unity3D手机游戏开发内容介绍
unity,也称unity3d,是近几年非常流行的一个3d游戏开发引擎,跨平台能力强,使用它开发的手机游戏数不胜数。
《unity3d手机游戏开发》通过三个部分循序渐进地介绍了unity在游戏开发方面的不同功能。第1~5章,由零开始,引导读者从基本的操作到完成三个完整的游戏实例,使读者对unity游戏开发有一个较全面的认识。第6~7章,重点介绍了unity在网络方面的应用。第8~10章介绍了如何将unity游戏移植到网页、和平台。另外,本书最后附有c#语言的快速教程,帮助缺乏程序开发基础的读者快速入门。
《unity3d手机游戏开发》适合广大游戏开发人员,也面向游戏开发爱好者、软件培训机构,以及的学生等。
Unity3D手机游戏开发作者介绍
金玺曾,资深游戏开发工程师,拥有近10年游戏开发经验,3D塔防游戏《野人大作战》主要开发者。曾在上海盛大网络工作,目前在上海爱客士电脑软件有限公司任开发经理。
Unity3D手机游戏开发作品目录
《unity3d手机游戏开发》  第1章 快速入门 1  1.1 unity简介 1  1.2 运行unity 2  1.2.1 unity的版本 2  1.2.2 安装unity 2  1.2.3 在线激活unity 2  1.2.4 运行示例工程 4  1.2.5 安装visual studio 6  1.3 创建一个“hello world”程序 6  1.4 调试程序 9  1.4.1 显示log 10  1.4.2 设置断点 10  小结 11  第2章 太空射击游戏 12  2.1 浅谈游戏开发 12  2.1.1 开始一个游戏项目 12  2.1.2 阶段性成果 12  2.1.3 策划 13  2.1.4 编写脚本 13  .2.1.5 美术 13  2.1.6 qa测试 14  2.1.7 发布游戏 14  2.2 游戏策划 14  2.2.1 游戏介绍 14  2.2.2 游戏ui 14  2.2.3 主角 14  2.2.4 游戏操作 15  2.2.5 敌人 15  2.3 导入美术资源 15  2.4 创建场景 16  2.4.1 创建火星背景 16  2.4.2 设置摄像机和灯光 20  2.5 创建主角 21  2.5.1 创建脚本 21  2.5.2 控制飞船移动 23  2.5.3 创建子弹 25  2.5.4 创建子弹prefab 26  2.5.5 发射子弹 27  2.6 创建敌人 28  2.7 物理碰撞 30  2.7.1 添加碰撞体 30  2.7.2 触发碰撞 32  2.8 高级敌人 34  2.8.1 创建敌人 34  2.8.2 发射子弹 36  2.9 声音与特效 38  2.10 敌人生成器 41  2.11 游戏管理器 43  2.12 标题界面 48  2.13 发布游戏 49  小结 52  第3章 第一人称射击游戏 53  3.1 策划 53  3.1.1 游戏介绍 53  3.1.2 ui界面 53  3.1.3 主角 53  3.1.4 敌人 53  3.2 游戏场景 53  3.3 主角 54  3.3.1 角色控制器 55  3.3.2 摄像机 57  3.3.3 武器 58  3.4 敌人 59  3.4.1 寻路 59  3.4.2 设置动画 63  3.4.3 行为 64  3.5 ui界面 68  3.6 交互 72  3.6.1 主角的射击 72  3.6.2 敌人的进攻与死亡 75  3.7 出生点 78  3.8 小地图 80  小结 84  第4章 塔防游戏 85  4.1 策划 85  4.1.1 场景 85  4.1.2 摄像机 85  4.1.3 胜负判定 85  4.1.4 敌人 85  4.1.5 防守单位 86  4.1.6 ui界面 86  4.2 游戏场景 86  4.3 摄像机 92  4.4 游戏管理器 95  4.5 路点 97  4.6 敌人 102  4.7 敌人生成器 105  4.7.1 在excel中设置敌人 105  4.7.2 创建敌人生成器 109  4.8 防守单位 115  4.9 生命条 119  4.10 自定义按钮 124  小结 131  第5章 资源创建 132  5.1 光照 132  5.1.1 光源类型 132  5.1.2 环境光与雾 134  5.1.3 lightmapping 135  5.1.4 light probe 137  5.2 terrain 139  5.3 skybox 142  5.4 粒子 144  5.5 物理 148  5.6 自定义shader 150  5.6.1 自定义字体 151  5.6.2 创建shader 152  5.7 贴图 155  5.8 3d模型导出流程 155  5.8.1 3ds max静态模型导出 155  5.8.2 3ds max动画模型导出 157  5.8.3 3ds max动画导出 158  5.8.4 maya模型导出 158  5.9 动画 159  5.10 优化 163  小结 163  第6章 与web服务器的交互 164  6.1 建立服务器 164  6.1.1 安装apache 164  6.1.2 安装mysql 166  6.1.3 安装php 169  6.1.4 显示php信息 171  6.1.5 调试php代码 172  6.2 www基本应用 174  6.2.1 http协议 174  6.2.2 get请求 175  6.2.3 post请求 176  6.2.4 上传下载图片 178  6.2.5 下载声音文件 180  6.3 自定义数据流 180  6.3.1 c#版本的数据流 181  6.3.2 php版本的数据流 188  6.3.3 测试 192  6.4 分数排行榜 195  6.4.1 创建数据库 195  6.4.2 创建php脚本 196  6.4.3 上传下载分数 199  小结 202  第7章 基于tcp/ip协议的聊天实例 203  7.1 tcp/ip开发简介 203  7.2 网络引擎 204  7.2.1 数据流 204  7.2.2 数据包 214  7.2.3 逻辑处理 215  7.2.4 定义消息标识符 217  7.2.5 客户端 217  7.2.6 服务器端 224  7.3 聊天客户端 229  7.4 聊天服务器端 234  7.5 收发结构体 238  7.6 protobuf简介 242  小结 244  第8章 用unity创建网页游戏 245  8.1 网页游戏简介 245  8.2 unity web 游戏 245  8.2.1 streaming关卡 245  8.2.2 上传游戏到kongregate 249  8.2.3 与网页通信 251  8.2.4 在网页上记录积分 253  8.2.5 自定义网页模板 254  8.2.6 自定义启动画面 258  8.3 flash游戏 259  8.3.1 软件安装 260  8.3.2 导出flash游戏 260  8.3.3 调试flash游戏 261  8.3.4 从flash工程读取unity 导出的flash游戏 261  8.3.5 在unity内调用as3代码 267  8.3.6 flash版本的太空射击游戏 271  8.4 assetbundle 274  8.4.1 打包资源 275  8.4.2 下载资源 276  8.4.3 安全策略 279  小结 280  第9章 将unity游戏移植到ios平台 281  9.1 ios简介 281  9.2 软件安装 281  9.3 申请开发权限 281  9.4 设置ios开发环境 282  9.5 测试ios游戏 286  9.6 发布ios游戏 288  9.6.1 申请发布证书 288  9.6.2 创建新应用 288  9.6.3 提交审核 290  9.7 集成game center 291  9.7.1 xcode到unity 291  9.7.2 设置高分榜和成就 297  9.7.3 实现game center功能 299  9.8 集成内消费系统 309  9.8.1 设置内消费 309  9.8.2 实现内消费 310  9.9 本地存储位置 317  小结 317  第10章 将unity游戏移植到android平台 318  10.1 android简介 318  10.2 软件安装 318  10.3 运行android游戏 320  10.3.1 设置android手机 320  10.3.2 安装驱动程序 320  10.3.3 设置android游戏工程 323  10.3.4 测试android游戏 327  10.3.5 发布android游戏 327  10.4 触屏操作 329  10.5 从eclipse到unity 333  10.5.1 创建.jar文件 334  10.5.2 导入.jar到unity 337  10.6 从unity到eclipse 339  10.6.1 导出eclipse工程 339  10.6.2 设置导出的eclipse工程 340  10.6.3 创建用于发布的eclipse工程 341  10.6.4 发布程序 346  10.7 自定义activity 347  小结 350  附录a c#语言 351  a.1 c#基础 351  a.2 面向对象编程 361  a.3 字符串 368  a.4 数组 370  a.5 i/o操作 372  a.6 委托 376  小结 381  附录b 特殊文件夹 382
.豆瓣读书[引用日期]

我要回帖

更多关于 极品飞车17安卓数据包 的文章

 

随机推荐