百度
360搜索
搜狗搜索

cocos2dx菜鸟教程,unity3d游戏开发薪水能到多少?详细介绍

本文目录一览: 如何在Cocos2d-x中集成安卓版微信SDK

如何在Cocos2d-x中集成安卓版微信SDK
方法/步骤
1.如果能在Cocos2d-x中集成微信SDK,让游戏能分享给好友或者朋友圈,那对游戏推广将会是非常有利的。好了,本文就是手把手地教大伙如何在Cocos2d-x中集成微信SDK。
先看下效果分享给好友,点击即可跳转链接:
分享到朋友圈,点击即可跳转链接:
2.环境
OS: Mac OSX
IDE: Xcode v5.11 and Eclipse ADT v22.3
Android SDK:4.3
Adnroid NDK:r9d
Cocos2d-x 3.2release
3.创建Cocos2d-x工程这里不再详述,网上的资料多如牛毛了。这里我按自己习惯的方式来。(1)命令行创建Cocos2dxWechat项目
$ cocos new -p com.fusijie.cocos2dxwechat -l cpp -d . Cocos2dxWechat
(2)交叉编译生成so文件
$ cd Cocos2dxWechat/proj.android/
$ ./build_native.py
(3)导入Eclipse生成APK导入libcocos2dx项目和Cocos2dxWechat项目到Eclipse中。在真机中成功运行Cocos2dxWechat.apk。4.申请创建微信应用这一步主要是在微信开放平台上申请创建移动应用,获取AppID。微信开放平台的网址(1)注册帐号,进入管理中心,点击创建移动应用。(2)第一步是填写应用名,描述,图标等等。如下图。
(3)填写应用官网,勾选Android应用,填写签名,包名等等。如下图。
注意:这里需要特别注意的是应用签名这一项。在第三步的时候,真机中成功运行Cocos2dxWechat.apk之后,我们需要从微信开放平台下载一个签名生成软件GenSignature
安装签名生成后,打开软件输入游戏包名获取即可。
这里的签名和游戏的包名和keystore是相关联的,如果修改了包名或者更换了keystore,必须同步更新微信开放平台管理中心的信息,防止失效。本示例采用的是debug签名。在完成以上工作后,提交审核即可。说是7天,实际上一般1——2天就审核过了。5.集成微信SDK刚才都是铺垫,这里开始才是进入主题了。要在Cocos2d-x调用微信安卓SDK,Jni跑不掉的。这里只演示如何进行分享到朋友圈和分享给好友,微信SDK还有很多高级的功能,如支付,收藏等等接口,有需要自行参考文档(移动应用开发)进行开发。
这里主要分成3部分来解释:
微信SDK下载,jar包导入
Android代码
C++代码
(1)下载微信SDK
(2)打开下载的Android_SDK.zip。解压,将lib目录下的libammsdk.jar拷到Cocos2dxWechat项目下的libs目录。(3)右键单击工程,选择Build Path中的Configure Build Path…,选中Libraries这个tab,并通过Add Jars…导入工程libs目录下的libammsdk.jar文件。
(4)在AppActivity中添加成员变量
private static final String APP_ID = “wx81115d2aa55710fa”;//AppID,从第四步获取
private static IWXAPI api;//微信API接口
private static AppActivity instance;//类静态实例,为了方便后面静态函数的调用
(5)注册到微信打开AppActivity,在onCreate()中调用regToWX()注册到微信
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
instance = this;
regToWX();
}
private void regToWX(){
api = WXAPIFactory.createWXAPI(this, APP_ID, true);
api.registerApp(APP_ID);
}
(6)由于这里采用的分享示例传递了一张icon,所以需要额外的一个bitmap的解析类Util类,这个类可以到微信官方SDK demo下载,也可以在本示例中下载(早期的SDK版本这个类是集成在微信SDK中)。icon放在res目录下的drawable目录,我这里偷个懒直接使用了应用icon。(7)分享给好友
public static void sendMsgToFriend(){
if(api.openWXApp())
{
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = “”;
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = “Tittle”;
msg.description = “Description”;
Bitmap thumb = BitmapFactory.decodeResource(instance.getResources(), R.drawable.icon);
msg.thumbData = Util.bmpToByteArray(thumb, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction(“webpage”);
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneSession;
api.sendReq(req);
}
else
{
Toast.makeText(instance, “未安装微信”, Toast.LENGTH_SHORT)。show();
}
}
(8)分享到朋友圈
public static void sendMsgToTimeLine(){
if(api.openWXApp())
{
if(api.getWXAppSupportAPI() >= 0x21020001)
{
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = “”;
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = “Tittle”;
msg.description = “Description”;
Bitmap thumb = BitmapFactory.decodeResource(instance.getResources(), R.drawable.icon);
msg.thumbData = Util.bmpToByteArray(thumb, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction(“webpage”);
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneTimeline;
api.sendReq(req);
}
else{
Toast.makeText(instance, “微信版本过低”, Toast.LENGTH_SHORT)。show();
}
}
else
{
Toast.makeText(instance, “未安装微信”, Toast.LENGTH_SHORT)。show();
}
}
其中buildTransaction()用于生成一个唯一的会话标识符。
private static String buildTransaction(final String type) {
return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
}
代码不难,所以不再逐行解释,可以参考SDK文档。(9)JNI调用在Classes目录下新建一个WeixinShare类,主要包含2个静态函数:
void WeiXinShare::sendToFriend()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo,“org/cocos2dx/cpp/AppActivity”,“sendMsgToFriend”, “()V”);
if (!isHave) {
log(“jni:sendMsgToFriend is null”);
}else{
//调用此函数
minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
}
#endif
}
void WeiXinShare::sendToTimeLine()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo,“org/cocos2dx/cpp/AppActivity”,“sendMsgToTimeLine”, “()V”);
if (!isHave) {
log(“jni:sendMsgToTimeLine is null”);
}else{
//调用此函数
minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
}
#endif
}
(10)Cocos2d-x使用这个就比较简单了,只要包含这个WeiXinShare类,调用这两个静态函数即可。
void HelloWorld::menuCloseCallback(Ref* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
//WeiXinShare::sendToFriend();
WeiXinShare::sendToTimeLine();
#endif
}
(11)Android.mk的修改最后不要忘记修改Android.mk文件。
复制代码
LOCAL_SRC_FILES := hellocpp/main.cpp \
//Classes/AppDelegate.cpp \
//Classes/HelloWorldScene.cpp \
//Classes/WeiXinShare.cpp
(12)重新交叉编译,打包为APK即可6.总结本文写的比较详细,但是也忽略了比如如何接收微信的请求及返回值的说明以及如何进行混淆等等,算是一个初级教程吧。主要是面向对jni调用,第三方安卓sdk集成不太了解的朋友。这里虽然只是针对微信sdk的部分功能集成进行说明,但是道理都是共通的,如何集成微博分享,如何集成第三方广告等等,用类似的方法都可以实现。

学游戏开发要学那么多东西。。。怎么学啊。。。

我觉得你这些学会了还是太少了。
开玩笑了,我作为一个游戏程序员在这个行业干了6年,其实你真正要会的东西是C++, 另外你还要对计算机的内存结构,数据编排管理方式,也就是我们说的数据结构掌握透彻。
Android只是一个程序的载体平台,你将来还有可能为iphone开发,所以这种东西你用到的时候通过sdk文档去了解一下它的规则就可以了。
cocos2dx你可以通过一个实例项目去掌握它,用它来做一块你进入这个行业的敲门砖还是可以的。毕竟现在用这个的公司是非常多,都想招个熟练工嘛。
粒子系统和OpenGL. 等你学了cocos2dx之后,如果对他背后的东西感兴趣可以研究一下,有百益而无一害。
数据库无非就是一些接口和查询语句,对于一个程序员来说,应该要学。
游戏脚本你可以学一个,比如lua, 不要纠结它的语法和形式,要思考为什么用脚本,用脚本有什么好处。大部分游戏引擎都有自己的脚本语言,你能理解他存在的意义遇到任何脚本语言就都没有问题了。
物理引擎我建议你也学一下,虽然我见过的很多游戏程序员根本不懂物理引擎,也能做出很优秀的游戏。但是当你深入研究了物理引擎,你就会觉得你游戏程序员的路还很长,就不会因此而满足现状。
最后给你一点忠告,学好数据结构很重要,做游戏的都说游戏的灵魂是程序,而程序的灵魂是数据!能创造出完美灵魂的人才是一个完美的游戏程序员。
你可以先去【绘学霸】网站找“游戏特效/unity3D”板块的【免费】视频教程-【点击进入】完整入门到精通视频教程列表: www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=305,306&zdhhr-11y17r-1380030440867 想要系统的学习可以考虑报一个网络直播课,推荐CGWANG的网络课。老师讲得细,上完还可以回看,还有同类型录播课可以免费学(赠送终身VIP)。自制能力相对较弱的话,建议还是去好点的培训机构,实力和规模在国内排名前几的大机构,推荐行业龙头:王氏教育。 王氏教育全国直营校区面授课程试听【复制后面链接在浏览器也可打开】:www.cgwang.com/course/gecoursemobilecheck/?zdhhr-11y17r-1380030440867 在“游戏特效/unity3D”领域的培训机构里,【王氏教育】是国内的老大,且没有加盟分校,都是总部直营的连锁校区。跟很多其它同类型大机构不一样的是:王氏教育每个校区都是实体面授,老师是手把手教,而且有专门的班主任从早盯到晚,爆肝式的学习模式,提升会很快,特别适合基础差的学生。大家可以先把【绘学霸】APP下载到自己手机,方便碎片时间学习——绘学霸APP下载: www.huixueba.com.cn/Scripts/download.html
比较主流的游戏开发引擎是Unity3d。比如现在依旧比较火热的王者荣耀、神庙逃亡、穿越火线、等都是基于Unity3d开发的游戏。游戏开发怎么学?
编程学习路线分三步:1、学习C#;2、学习Unity;学习C#
首先C#在游戏开发中是一种脚本语言。脚本语言是做什么的呢?就是给计算机发出指令,让它什么时候做什么事情。
比如,警察想命令一条警犬做一些事情,会发出手势指令:“靠”、“坐”、“来”、“叫”、“扫撕”……当警犬看到这些手势指令时,它就会做相应的行为。而这些手势合集,在控制计算机时,对应的就是脚本语言。比如我写一句“Delete Bullet”,意思就是删除这颗子弹;写一句“Soldier Fire”,意思就是让这个士兵开火。C#就是用来发出这些指令的。
然后我们说学Unity,Unity是一个游戏引擎。游戏引擎中集合了开发一个游戏所需要的大部分工具、组件、环境等内容。就像拍一部电影,我们需要摄像机、摇臂、灯光、挑干等基础工具。做游戏也需要摄像机、灯光、地形、人物控制器等组件,游戏引擎里面就包括了许多这些基础内容。握游戏引擎,使我们不用重头开始造轮子,而是直接拿现成的轮子来组装车。
一般来说C#编程能力是学Unity的前置条件。对于什么都不懂的人来说,直接学习C#会感到无聊、迷茫、没有尽头,不知道现在所学的这些东西在以后实际做游戏时会怎么用到,很可能会让理想之路产生动摇。那么直接学Unity就不会无聊了。
那么目前unity3d的前景怎么样?据了解,游戏开发工程师福利待遇好,行业也处于上升期间,专业人才缺乏,市场供不应求。
学游戏开发必须学的就是unity引擎语言,这是必须的,其次要学C#,我表弟在好玩科技就是学游戏开发的,他在那就学两种语言,现在人家都是游戏开发高手了
先学java,建议先看动力节点301集java教程大全,把这个学好,以后再学其他任何语言都OK
学习方面:
1、编程(C、C++、网页制作,计算机图形学背景等)。
2、美术(原型概念设计、色彩、模型等)。
3、设计(核心玩法、交互等)。
4、音乐(配音等)。
游戏开发简介:
游戏开发主要分为2D游戏和3D游戏。2D游戏通常是为手机开发的,一般使用的开发工具是Cocos2dx,使用的开发语言是C++。3D游戏一般使用的游戏开发工具是unity3D,使用的开发语言是c#或者Javascript。所以要想开发哪种游戏,就必须知道需要用到哪些开发知识。
首先来说一下,如果是打算学习2D手游开发,那么,首先需要学习C++。
学习C++的路线一般是先学习C语言, 对编程有点了解后, 就是怎么样编写程序, 什么是函数, 指针怎么用.等对编程有点了解后,才开始学习C++, 这样的一个梯度就不会对C++产生恐惧感!。然后,还要了解Cocos 2dx 的使用。以及熟悉api.等等。
再说一下3D游戏的开发。3D游戏用的比较多的开发工具是unity3D引擎。unity3D开发用的是C# (Javascript也用,但用的比较少),所以我们先要学会c#。
c#也是一种面向对象的编程语言,相比c++,也是相对简单的。然后,就需要学会unity3D引擎的使用了。而且这个也是非常的重要。没有什么技巧,就是自己一步一步学习,一项一项的熟悉。还有unity3D中的api.也是需要熟悉的。

阅读更多 >>>  微信行程码怎么刷新

做游戏开发需要学什么?

如果是打算学习2D手游开发,那么首先需要学习C++,然后,还要了解Cocos2dx的使用。3D游戏用的比较多的开发工具是unity3d引擎。unity3d开发用的是C#(javascript也用,但用的比较少),所以先要学会C#。
游戏开发主要分为2D游戏和3D游戏,2D游戏通常是为手机开发的,一般使用的开发工具是Cocos2dx,使用的开发语言是C++。
3D游戏一般使用的游戏开发工具是Unity3d,使用的开发语言是c#或者javascript。所以,想要开发哪种游戏,就必须知道需要用到哪些开发知识。
扩展资料:游戏制作一般主要分为两大块,即程序开发、美术设计。程序开发主要包括服务器端开发、客户端开发。而美术设计包括场景、角色、次时代、特效、动画等部分,要完成一个优秀的游戏作品,每一部分都需有专业人才负责。
对于大型的游戏,一般需要几十个人的团队制作几年,而小游戏则可能只需一个人制作几天。
一般的大型游戏制作都会由游戏开发公司来完成,小型的游戏则有可能由业余团队或者个人完成,如RPG制作大师此类软件就可以让不懂技术的人做出电脑游戏。
图形引擎;声音引擎;物理引擎;游戏引擎;人工智能或游戏逻辑;游戏GUI界面(菜单);游戏开发工具;支持局域网对战的网络引擎开发;支持互联网对战的网络引擎开发。
对于游戏开发人员来说,在开发游戏时候,选择一个好的游戏服务器也是很重要的。游戏服务器开发使用的技术取决于游戏的类型,不同的游戏类型,需要的游戏环境不一样,所使用的技术也不一样。但是在本质上都是一样的,都是面对数据,处理数据。
关于游戏语言
中小型游戏大致可分为网页游戏,flash游戏,小游戏等,基本上都是一些休闲类的傻呆萌的情节和操作,这类游戏开发相对比较简单,会Javascript、HTML、flashcs、Java就可以进行开发了,语言类主要有C/C++,汇编语言,着色器语言,脚本语言,高效的开发语言C#或Java。
所以,任何一个大型游戏都不可能只用一种语言去开发。
做游戏开发需要学很多,如游戏材质基础、游戏道具制作等等,推荐去翼狐学习,该网站站内课程数量多,60+款软件 10000+高质量原创课程+配套学习用工程文件。【进入官网,立即领取¥600 新人专属大礼包 0元体验VIP特权】 学习3d游戏制作有以下几种优势:1、3d制作不要学历3d游戏制作不是纯知识类应用,更多的是属于技术型操作软件,对纯理论知识要求没有硬性要求。2、工作内容随心而动游戏制作是创新的技术,它将智慧理念视觉化,把最直观的视觉感受呈现给大家,并感染不同的人群。会在设计过程中结实到不同行业的知心伙伴,并在不断挑战自己认知和技术中成长。3、收入自由化根据经济水平的提高和企业的盈利不同,每个企业涨薪标准也不同,游戏企业一般是每年2次调薪,还有分红和期权,年终奖励等。想要了解更多关于游戏开发的信息,推荐咨询翼狐。翼狐网自2011年上线以来,秉持工匠精神,专注设计教育,精选优质、系统、实用的课程,开发大师课,与国内外资深讲师合作的教程,立足前沿技术,将某一领域的内容进行系统讲解,给用户提供完整的、有体系的学习内容。翼狐网创办特训营,针对用户的短期综合提升,翼狐网特推出特训营,直播+录播、一学一练的学习方式,迅速提升专业能力!
看你要去哪个方向了,策划、程序、美术,每个方向又有细分。
策划有剧情策划,关卡策划,数值策划等等。
程序有客户端编程,服务器编程,引擎编程,脚本编程,手机游戏开发, 网页游戏。
美术有3d建模,2d美术。
方向不一样需求不一样。
较了解程序,就程序俩说吧。
如果要说只为干活,客户端你得学windows编程,socket等
服务器当然就是各种数据库操作,各种通讯操作。
引擎编程需要了解底层,directx,opengl,3d数学,物理基础等。
脚本的话就学脚本就够了。
手机游戏开发分ios、android,对应使用不同引擎需要不同的学习。
网页游戏前端目前flex流行,js,html也在发展。
以上只是速成。但是真正建议的是,
学好c++,数据结构,socket编程,了解windows编程,学习数据库编程。
先学3d数学,再学directx,然后试着做个小游戏。
学习设计模式。研究开源引擎。
会是个比较漫长的过程,但是基础扎实,各种开发都不怕。
可以专挑一条喜欢的道路深入研究,也可以专注游戏逻辑实现。
这个话题其实有点儿大。这里面有一个重要的区别是:你是想当独立游戏开发者,还是想当游戏行业的从业人员。
如果是想当游戏行业的从业人员,我觉得就简单了,盯准你想当的职业,培训相应技能就好。事实上,在游戏行业里的开发,无论是精通特定引擎或者架构(如cocos2D,unity3D,OpenGL,DirectX),还是只是对基础(如算法、设计模式、图形学、人工智能等)有一定深度,都能入行。(不是都学,是对其中一个有超过平均水平的掌握或者理解即可,然后就投简历吧。现在游戏也这么火,不难找工作)。
但是对于独立游戏开发者,事情就不一样了。显然需要掌握更多的东西。但是掌握更多的东西不一定是专精。这就要求独立开发者有取舍。首先要思考,自己想在什么平台做游戏?ios?好好看ios sdk;android?好好看android sdk?win8?好好看wpf。网络?flash或者html5等等等等。
我在上面只列出了一个基础,不包括图形引擎或者游戏引擎。事实上,一些游戏不需要引擎的协助。独立开发者的游戏更是注重创意,因此,很多并不依靠引擎的游戏也能有不错的收益。但是,要想更进一步,需要在平台的基础上选择合适的引擎加以研究。
最后,我认为独立开发者需要了解一些美工知识,并且对数值策划有一些感觉。但从美工的角度,很多美术非常简单的游戏也很不错;所以我一向不认为美术是游戏开发的关键。当然,它是一个能增添很多亮点的环节。
而对于游戏策划,我想每一个想开发游戏的人都有当游戏策划的料子。但这个职能类似产品经理,猛地一想很简单,可把一份策划捋顺了,有逻辑,经得起市场验证,难。不过这是一个试错的过程,只能在探索中学习,实践中学习,书本学来的极其有限。
附上出处连接:http://www.zhihu.com/question/20242554
我作为一个游戏程序员在这个行业干了6年,其实你真正要会的东西是C++, 另外你还要对计算机的内存结构,数据编排管理方式,也就是我们说的数据结构掌握透彻。
Android只是一个程序的载体平台,你将来还有可能为iphone开发,所以这种东西你用到的时候通过sdk文档去了解一下它的规则就可以了。
cocos2dx你可以通过一个实例项目去掌握它,用它来做一块你进入这个行业的敲门砖还是可以的。毕竟现在用这个的公司是非常多,都想招个熟练工嘛。
粒子系统和OpenGL. 等你学了cocos2dx之后,如果对他背后的东西感兴趣可以研究一下,有百益而无一害。
数据库无非就是一些接口和查询语句,对于一个程序员来说,应该要学。
游戏脚本你可以学一个,比如lua, 不要纠结它的语法和形式,要思考为什么用脚本,用脚本有什么好处。大部分游戏引擎都有自己的脚本语言,你能理解他存在的意义遇到任何脚本语言就都没有问题了。
物理引擎我建议你也学一下,虽然我见过的很多游戏程序员根本不懂物理引擎,也能做出很优秀的游戏。但是当你深入研究了物理引擎,你就会觉得你游戏程序员的路还很长,就不会因此而满足现状。
最后给你一点忠告,学好数据结构很重要,做游戏的都说游戏的灵魂是程序,而程序的灵魂是数据!能创造出完美灵魂的人才是一个完美的游戏程序员。
学习游戏开发需要熟练掌握游戏编辑软件,熟练掌握好这些基础的游戏软件功能就可以了。常用的编辑软件有以下6种。1、3dsMAX:大多数游戏开发公司美工使用,效率较高,可以独立制作游戏中所有美术相关资源。2、MAYA:跟3dsMAX差不多的软件,因个人喜好而定,MAYA在制作动作的方面较MAX稍差,不过在很多方面这两款软件都是可以兼容的。3、Deeppaint3D:可以直接打开3维模型文件,在上面绘制贴图。4、C++:程序使用,用来实现游戏中的各种功能,调试BUG等。5、Photoshop与Panter:配合MAX或MAYA来绘制各种模型需要用的贴图。6、ZBrush:美工制作超高模用的,然后可以生成法线贴图,在MAYA或MAX中使用。

网易云捕怎么用 网易云捕APP质量跟踪使用教程方法

能收集以下崩溃异常日志:
1、java层代码
2、native层(NDK层,对应为so文件中的C/C++代码)
3、unity3d引擎下的C#脚本
4、cocos2dx(Lua,C++,JS代码异常均能捕获)
方法/案例
库文件导入
方式一:自动导入(推荐)
在Module的buid.gradle文件中添加依赖和属性配置:
(另有手动导入办法,详见网易云捕官网集成说明)
集成说明列表
1、参数配置2、简单的初始化调用3、Java集成案例4、NDK集成案例5、配置mapping文件
参数配置
1)权限信息配置需要在在AndroidManifest.xml中添加以下权限:(见图一)
备注:在Android M系统以后,android.permission.READ_PHONE_STATE被设定为敏感权限,如果
AndroidManifest.xml文件中targetSdkVersion被设置为23以上,且代码中没有请求过该权限,可能导致获取的imei、deviceID等设备信息为空,但是对程序的稳定性并没有影响。
2)AppID配置还需在AndroidManifest.xml的application中添加

标签,其中android:value填写您APP的AppID值,可以在”用户中心“-”设置“-”产品信息“中获取。(注意:将meta-data子标签加到

父标签下,配置不正确可能导致后台看不到数据。)(见图二)

3)Proguard混淆配置避免混淆Bugrpt SDK,请在Proguard混淆文件中配置:(见图三)

简单的初始化调用

在项目Application类或者主Activity类的onCreate()方法中添加以下代码:

如果Java层或NDK代码发生异常时,bugrpt便会捕获到该异常并发送给服务器。

Java集成案例

SDK集成后可以测试一下bugrpt的异常捕获能力,以下为一个典型的Java集成案例:编写一个测试使用的demo示例,新建工程名 为"crashtest",导入bugrpt.jar,并在AndroidManifest.xml中添加相应权限并进行初始化调用。为了便于观测,我们 在“crashTest”按钮里添加一个模拟的异常,对应的java层代码:(见图一)

可以尝试生成APK之后,点击按钮触发模拟异常,后台便能查询到如下崩溃日志:(见图二)

NDK集成案例

以下为一个典型的NDK集成案例:编写一个测试使用的NDK崩溃demo示例,新建工程名为"crash",导入相应的 libbugrpt.so,在AndroidManifest.xml中添加相应权限,之后对云捕sdk进行初始化调用。为了便于观测,同样构建一个按钮,在其中添加一个模拟的异常,对应的java层代码:(见图一)

而msg函数则是打印一个字符串最后触发了一个异常,C++实现代码如下:(见图二)

可以尝试生成APK之后,点击按钮触发模拟异常,后台便能查询到如下崩溃日志:可以很清晰地看出崩溃发生在msg函数的某个偏移,pc为00000df2,可以通过addr2line很方便地转换为出错的代码行号。(见图三)

可以看出demo.cpp第51行代码处的代码确实是出错位置。(见图四)

配置mapping

生成APK的时候一般都需要进行混淆处理,此时崩溃发生时产生的崩溃堆栈信息都是混淆后的符号,不便于排查BUG。为了能正确地还原回源码时的堆栈,需要配置一下mapping.txt文件,让“云捕”自动化进行反混淆处理。

混淆处理时,利用proguard在混淆后会生成一个mapping.txt文件,该文件地址Eclipse下默认生成在工程目录的proguard文件夹下,而Android Studio则是根据配置生成在指定目录下。Eclipse&Android Studio:(见图一)

只需要把这个mapping.txt文件上传到后台即可。登录云捕系统,选择您的APP后点击“上传mapping“:(见图二)

上传成功后会显示:(见图三)

高级设置

我们提供UserStrategy类作为Bugrpt的初始化扩展,开发者可以传入一些自定义信息。通过以下方式传入:

Context appCtx = this.getApplicationContext();

UserStrategy strategy = new UserStrategy(appCtx);//...在这里设置strategy的属性,在bugrpt初始化时传入

CrashHandler.init(appCtx, strategy);

UserStrategy主要API:1、设置渠道:Bugrpt默认读取AndroidManifest.xml文件中渠道信息,可通过该接口修改渠道信息。

strategy.setChannel("myChannel");

2、设置场景:Bugrpt可以设置崩溃场景。

strategy.setScene("myScene");

3、设置用户账户Bugrpt可以设置用户的账户信息,方便开发者针对性排错。

strategy.setUserId("myUserID")

4、设置自定义Map参数对

Bugrpt支持用户自定义Map参数可以保存发生Crash时的一些自定义的环境信息。在发生Crash时会随着异常信息一起上报并在页面展示。

strategy.addUserDefinedParam("key", "value");

注意:最多可以有9对自定义的key-value(超过则添加失败),key限长50字节、value限长200字节,过长截断。

更多的用户功能

1 主动上报开发者catched的异常

2 开发者主动上传信息接口

3 开发者记录面包屑接口

4 ReLinker.loadLibrary接口

cocos2dx下,骨骼动画编辑器的最优选择是哪个

还有第四种选择,3.x 下采用flash + Armature,就是不知道新版的Armature和原来的有多大区别。
现在面临连个选择,升级3.x,3.x有3种选择:
1. cocostudio + 官方的Armature,
2. spine + 官方的SkeletonAnimation
3. flash + dragonBones官方的cocos2dx 3.x的插件,
这三种选择有哪位大牛给对比细致分析下,我先说说我的看法吧
第一种选择优点在于可以跟着官方走,更新
第二种选择优点在于 spine更新块,稳定,成熟
第三种选择优点在于flash美工熟练,不过dragonBones在给白鹭引擎做,目前3.x没看到专人维护,同样看了他们的2.2.x的版本,太卡基本不能用。
cocos2dx能够用的差不多就Spine和DragonBones。
最好的自然是 spine(专业版),不过需要大约299美刀一个key,应为是要钱的。
如果是 Spine(基础版),69美刀一个key,你就不用考虑了,这个是个战5渣,应为没有 IK(约束),FFD(自由变形/mesh)这两个相当实用的功能,只有专业版才有。
网上倒是有个破檞版,1.7.0.3版本,版本比较老(现在都3.x多了),不过倒是有Mesh功能,可以自由变形,不过.......
其实推荐的还是 DragonBones,应为就在今年六七月份,这个刚好被完善了,到了版本4.5以上spine(专业版)有的功能这个都有,官网也给出了c++的运行库(需要自己去配),最关键的是这个不要钱的。(不要去看网上的教程,那个是老黄历,怎么说呢,大约在cocos2dx 3.10以前,DragonBones刚好到了4.5版本,有了Mesh功能,这个时候DragonBones自带的编辑器其实并不能直接支持cocos,还需要一个flash的插件导出,而且mesh功能也不能用,虽说这个软件本身还是可以的,但对cocos的支持其实很差【一脸的嫌弃】)
我最近试了下的,已经能直接支持了,功能齐全。

unity3d游戏开发薪水能到多少?

就算不是大神也能有5K到10K。。。提升水平比较依赖于美工,,因为没美工几乎做不动游戏,还是得找个公司好好发展,往后破万不是问题
这个要看个人技术水平吧,不过相比之下还是同行业比较高的,我朋友刚从菜鸟在线培训出来,现在的工资是7k,未来上个10k,15k都是很有可能的。
你可以先去【绘学霸】网站找“游戏特效/unity3D”板块的【免费】视频教程-【点击进入】完整入门到精通视频教程列表: www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=305,306&zdhhr-11y17r-1380029735580 想要系统的学习可以考虑报一个网络直播课,推荐CGWANG的网络课。老师讲得细,上完还可以回看,还有同类型录播课可以免费学(赠送终身VIP)。自制能力相对较弱的话,建议还是去好点的培训机构,实力和规模在国内排名前几的大机构,推荐行业龙头:王氏教育。 王氏教育全国直营校区面授课程试听【复制后面链接在浏览器也可打开】:www.cgwang.com/course/gecoursemobilecheck/?zdhhr-11y17r-1380029735580 在“游戏特效/unity3D”领域的培训机构里,【王氏教育】是国内的老大,且没有加盟分校,都是总部直营的连锁校区。跟很多其它同类型大机构不一样的是:王氏教育每个校区都是实体面授,老师是手把手教,而且有专门的班主任从早盯到晚,爆肝式的学习模式,提升会很快,特别适合基础差的学生。大家可以先把【绘学霸】APP下载到自己手机,方便碎片时间学习——绘学霸APP下载: www.huixueba.com.cn/Scripts/download.html
我是三年的unity程序。坐标北京。程序功底很烂。这些年学的很多也很吃力。18k。要学的东西太多了。
现在游戏开发都是用跨平台的游戏引擎,主流就是Cocos2dx和Unity这两类游戏引擎的开发有1-2年经验的大概是10-15k之间,3年以上经验的是15k-30k之间,其实也没用明显的界定,因为里面的岗位很多的,有手游开发工程师,手游开发主管,手游研发经理,手游研发总监,手游产品经理,首席技术官,产品总监,CEO菜鸟在线竭诚为您服务。

怎样在 UIKit 中使用 Cocos2d-x

众所周知,cocos2d-x是一款基于c++/Opengl 的强劲跨平台引擎,通过一次编码,你可以同时用于android,iOS等大多数主流平台。这使得多平台的开发更加方便。
虽然比起cocos2d-x的有名的兄弟-cocos2d-iphone,-x还很年轻并缺少教程,但是由于团队的不懈努力,使得-x逐渐完善并不断被市场认可。
如果你想把UIKit折腾进Cocos2d-x,Github有一个开源工程,推荐给大家学习一下:open source project on GitHub .
相反,如果你想把coocs2d-x折腾进UIKit(UIVIewController),以下是详细步骤:
怎样在UIKit中使用cocos2d-x
0. 废话少说,这里是本文的示例代码:Sample project Cocos2dxOnUikit.zip.
1.我们有一个UIKit工程,同时希望在某一个 view controller中显示Cocos2d-x (OpenGL view)。
2. 下载Cocos2d-x代码(哥说了句废话,你知道该去哪下载的)
3. 解压(废话again)
4. 创建工程,如果你不会,推荐看看泰然以往的教程。
5. 移除cocos2dx/platform/目录下的CCImage.cpp 和 CCThread.cpp
6. 打开xcode的项目配置,点击build Settings,在“Library Search Paths” 参数添加$(SRCROOT)/cocos2dx/platform/third_party/ios/libraries/(为了在cocos2dx中使用curl库)
7. 接着,在“Headers Search Paths”参数添加
$(SRCROOT)/cocos2dx and $(SDKROOT)/usr/include/libxml2 (为了使用libxml 库)
8. 在 “Other C++ Flags” 参数添加-DCC_UNDER_IOS
9.从HelloWorld示例工程中拷贝AppDelegate.cpp 和 AppDelegate.h并添加到我们现在这个工程中。
怎样在UIKit中使用cocos2d-x
像上面截图那样注释掉applicationDidFinishLaunching()。这些代码我们稍后会转移到ViewController 中去。
译者注:确保AppDelegate 在你的UIKit工程中没有多次调用,不然你的项目会有两个AppDelegate.h头文件。
10. 修改你YourAppDelegate.m的扩展名为:YourAppDelegate.mm(.mm将其中代码变成Objective C++,这样使其被编译成用c++方式调用)
11. 在你的YourAppDelegate.mm添加:
#import "AppDelegate.h"
static AppDelegate s_sharedApplication;
12. 继续把YourViewController.m扩展名改为YourViewController.mm.
13. 修改一个文件:
在cocos2d-x的CCdirectorCaller.mm文件中
将代码
+(void) destroy {
[[s_sharedDirectorCaller release];
}
修改为:
+(void) destroy {
[s_sharedDirectorCaller destroy];
[s_sharedDirectorCaller release];
s_sharedDirectorCaller=nil;
}
-(void) destroy {
[displayLink invalidate];
displayLink=nil;
}
说明:在cocos2d-x中使用UIKit view,我们会常常使用到director 的create和end。当我们调用director->end()方法时,CCDirectorCaller 并没有真正释放(显示连接displayLink 依然存在),以上方法可以修复这个问题。这就相当于我们为了释放CCDirectorCaller,我们不得不先让显示连接(displayLink )无效。
14.在cocos2dx/support/zip_support/ioapi.cpp中,修改fopen64接口名称 为fopen,fseeko64 修改为fseeko,ftello64 修改为ftello。
15. 添加以下库:
OpenGLES.framework
libxml2.dylib
libz.1.2.5.dylib
QuartzCore.framework
怎样在UIKit中使用cocos2d-x
16. 现在,只需最后一步,Cocos2d-x 的OpenGL view就整合进controller’s view了(类似modal view controller):
-(void)loadOpenglScene:(CGRect)rect {
cocos2d::CCApplication::sharedApplication().run();
EAGLView *glView = [EAGLView viewWithFrame: rect
pixelFormat: kEAGLColorFormatRGBA8
depthFormat: GL_DEPTH_COMPONENT16_OES
preserveBackbuffer: NO
sharegroup:nil
multiSampling:NO
numberOfSamples:0];
[self.view insertSubview:glView atIndex:0];
cocos2d::CCDirector *pDirector = cocos2d::CCDirector::sharedDirector();
pDirector->setOpenGLView(&cocos2d::CCEGLView::sharedOpenGLView());
// enable High Resource Mode(2x, such as iphone4) and maintains low resource on other devices.
// pDirector->enableRetinaDisplay(true);
// turn on display FPS
//pDirector->setDisplayFPS(true);
// pDirector->setDeviceOrientation(kCCDeviceOrientationLandscapeLeft);
// set FPS. the default value is 1.0/60 if you don't call this
pDirector->setAnimationInterval(1.0 / 60);
// create a scene. it's an autorelease object
cocos2d::CCScene *pScene_ = cocos2d::MyGraphicsEngine::scene(myparams);
// run
pDirector->runWithScene(pScene_);
// Retained because if not, we get an BAD ACCESS exception when we try to release the Cocos2d-x environment later
[[EAGLView sharedEGLView] retain];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.

阅读更多 >>>  微信账单怎么导出excel格式

// In this example we use a navigation bar and a "close" button, the Cocos2d-x view will be added below the navigation bar
UINavigationBar *bar=[[[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 49)]autorelease];
[self.view insertSubview:bar atIndex:0];
UIBarButtonItem *closeButton=[[[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStyleDonetarget:self action:@selector(close)] autorelease];
UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@""];
item.rightBarButtonItem = closeButton;
item.hidesBackButton = YES;
[bar pushNavigationItem:item animated:NO];
[item release];
[self loadOpenglScene:CGRectMake(0, bar.frame.size.height, self.view.frame.size.width, self.view.frame.size.height-bar.frame.size.height)];
}
-(void)close {
//TODO
}
-(void)viewDidDisappear:(BOOL)animated {
//Release Cocos2d-x stack
cocos2d::CCDirector *pDirector = cocos2d::CCDirector::sharedDirector();
//CCDirector::end() is asynchronous. That's why you can't release [EAGLView sharedEGLView] here after (you'll get a BAD ACCESS exception), and that's why we put it un viewDidUnload.
pDirector->end();
[self checkWin];
}
- (void)viewDidUnload {
[[EAGLView sharedEGLView] release];
[super viewDidUnload];
// Release any retained subviews of the main view.
}

如何在Cocos2d-x中集成安卓版微信SDK

  如何在Cocos2d-x中集成安卓版微信SDK
  方法/步骤
  1.如果能在Cocos2d-x中集成微信SDK,让游戏能分享给好友或者朋友圈,那对游戏推广将会是非常有利的。好了,本文就是手把手地教大伙如何在Cocos2d-x中集成微信SDK。
  先看下效果分享给好友,点击即可跳转链接:
  分享到朋友圈,点击即可跳转链接:
  2.环境
  OS: Mac OSX
  IDE: Xcode v5.11 and Eclipse ADT v22.3
  Android SDK:4.3
  Adnroid NDK:r9d
  Cocos2d-x 3.2release
  3.创建Cocos2d-x工程这里不再详述,网上的资料多如牛毛了。这里我按自己习惯的方式来。(1)命令行创建Cocos2dxWechat项目
  $ cocos new -p com.fusijie.cocos2dxwechat -l cpp -d . Cocos2dxWechat
  (2)交叉编译生成so文件
  $ cd Cocos2dxWechat/proj.android/
  $ ./build_native.py
  (3)导入Eclipse生成APK导入libcocos2dx项目和Cocos2dxWechat项目到Eclipse中。在真机中成功运行Cocos2dxWechat.apk。4.申请创建微信应用这一步主要是在微信开放平台上申请创建移动应用,获取AppID。微信开放平台的网址(1)注册帐号,进入管理中心,点击创建移动应用。(2)第一步是填写应用名,描述,图标等等。如下图。
  (3)填写应用官网,勾选Android应用,填写签名,包名等等。如下图。
  注意:这里需要特别注意的是应用签名这一项。在第三步的时候,真机中成功运行Cocos2dxWechat.apk之后,我们需要从微信开放平台下载一个签名生成软件GenSignature
  安装签名生成后,打开软件输入游戏包名获取即可。
  这里的签名和游戏的包名和keystore是相关联的,如果修改了包名或者更换了keystore,必须同步更新微信开放平台管理中心的信息,防止失效。本示例采用的是debug签名。在完成以上工作后,提交审核即可。说是7天,实际上一般1~2天就审核过了。5.集成微信SDK刚才都是铺垫,这里开始才是进入主题了。要在Cocos2d-x调用微信安卓SDK,Jni跑不掉的。这里只演示如何进行分享到朋友圈和分享给好友,微信SDK还有很多高级的功能,如支付,收藏等等接口,有需要自行参考文档(移动应用开发)进行开发。
  这里主要分成3部分来解释:
  微信SDK下载,jar包导入
  Android代码
  C++代码
  (1)下载微信SDK
  (2)打开下载的Android_SDK.zip。解压,将lib目录下的libammsdk.jar拷到Cocos2dxWechat项目下的libs目录。(3)右键单击工程,选择Build Path中的Configure Build Path...,选中Libraries这个tab,并通过Add Jars...导入工程libs目录下的libammsdk.jar文件。
  (4)在AppActivity中添加成员变量
  private static final String APP_ID = "wx81115d2aa55710fa";//AppID,从第四步获取
  private static IWXAPI api;//微信API接口
  private static AppActivity instance;//类静态实例,为了方便后面静态函数的调用
  (5)注册到微信打开AppActivity,在onCreate()中调用regToWX()注册到微信
  protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  instance = this;
  regToWX();
  }
  private void regToWX(){
  api = WXAPIFactory.createWXAPI(this, APP_ID, true);
  api.registerApp(APP_ID);
  }
  (6)由于这里采用的分享示例传递了一张icon,所以需要额外的一个bitmap的解析类Util类,这个类可以到微信官方SDK demo下载,也可以在本示例中下载(早期的SDK版本这个类是集成在微信SDK中)。icon放在res目录下的drawable目录,我这里偷个懒直接使用了应用icon。(7)分享给好友
  public static void sendMsgToFriend(){
  if(api.openWXApp())
  {
  WXWebpageObject webpage = new WXWebpageObject();
  webpage.webpageUrl = "";
  WXMediaMessage msg = new WXMediaMessage(webpage);
  msg.title = "Tittle";
  msg.description = "Description";
  Bitmap thumb = BitmapFactory.decodeResource(instance.getResources(), R.drawable.icon);
  msg.thumbData = Util.bmpToByteArray(thumb, true);
  SendMessageToWX.Req req = new SendMessageToWX.Req();
  req.transaction = buildTransaction("webpage");
  req.message = msg;
  req.scene = SendMessageToWX.Req.WXSceneSession;
  api.sendReq(req);
  }
  else
  {
  Toast.makeText(instance, "未安装微信", Toast.LENGTH_SHORT).show();
  }
  }
  (8)分享到朋友圈
  public static void sendMsgToTimeLine(){
  if(api.openWXApp())
  {
  if(api.getWXAppSupportAPI() >= 0x21020001)
  {
  WXWebpageObject webpage = new WXWebpageObject();
  webpage.webpageUrl = "";
  WXMediaMessage msg = new WXMediaMessage(webpage);
  msg.title = "Tittle";
  msg.description = "Description";
  Bitmap thumb = BitmapFactory.decodeResource(instance.getResources(), R.drawable.icon);
  msg.thumbData = Util.bmpToByteArray(thumb, true);
  SendMessageToWX.Req req = new SendMessageToWX.Req();
  req.transaction = buildTransaction("webpage");
  req.message = msg;
  req.scene = SendMessageToWX.Req.WXSceneTimeline;
  api.sendReq(req);
  }
  else{
  Toast.makeText(instance, "微信版本过低", Toast.LENGTH_SHORT).show();
  }
  }
  else
  {
  Toast.makeText(instance, "未安装微信", Toast.LENGTH_SHORT).show();
  }
  }
  其中buildTransaction()用于生成一个唯一的会话标识符。
  private static String buildTransaction(final String type) {
  return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
  }
  代码不难,所以不再逐行解释,可以参考SDK文档。(9)JNI调用在Classes目录下新建一个WeixinShare类,主要包含2个静态函数:
  void WeiXinShare::sendToFriend()
  {
  #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台
  JniMethodInfo minfo;
  bool isHave = JniHelper::getStaticMethodInfo(minfo,"org/cocos2dx/cpp/AppActivity","sendMsgToFriend", "()V");
  if (!isHave) {
  log("jni:sendMsgToFriend is null");
  }else{
  //调用此函数
  minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
  }
  #endif
  }
  void WeiXinShare::sendToTimeLine()
  {
  #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台
  JniMethodInfo minfo;
  bool isHave = JniHelper::getStaticMethodInfo(minfo,"org/cocos2dx/cpp/AppActivity","sendMsgToTimeLine", "()V");
  if (!isHave) {
  log("jni:sendMsgToTimeLine is null");
  }else{
  //调用此函数
  minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
  }
  #endif
  }
  (10)Cocos2d-x使用这个就比较简单了,只要包含这个WeiXinShare类,调用这两个静态函数即可。
  void HelloWorld::menuCloseCallback(Ref* pSender)
  {
  #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
  //WeiXinShare::sendToFriend();
  WeiXinShare::sendToTimeLine();
  #endif
  }
  (11)Android.mk的修改最后不要忘记修改Android.mk文件。
  复制代码
  LOCAL_SRC_FILES := hellocpp/main.cpp \
  ../../Classes/AppDelegate.cpp \
  ../../Classes/HelloWorldScene.cpp \
  ../../Classes/WeiXinShare.cpp
  (12)重新交叉编译,打包为APK即可6.总结本文写的比较详细,但是也忽略了比如如何接收微信的请求及返回值的说明以及如何进行混淆等等,算是一个初级教程吧。主要是面向对jni调用,第三方安卓sdk集成不太了解的朋友。这里虽然只是针对微信sdk的部分功能集成进行说明,但是道理都是共通的,如何集成微博分享,如何集成第三方广告等等,用类似的方法都可以实现。

阅读更多 >>>  怎么设置微信推送通知

网站数据信息

"cocos2dx菜鸟教程,unity3d游戏开发薪水能到多少?"浏览人数已经达到19次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:cocos2dx菜鸟教程,unity3d游戏开发薪水能到多少?的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!