cocos用什么写代码,coco指什么
想在cocos studio中运行用vs编写的c++代码
你需要新建一个C++控制台工程,将你的cpp文件添加到工程中,然后生成,最后点工具栏绿色的运行按钮运行。
cocos-lua中怎么用代码控制手机开启和关闭游戏震动功能
我写了一个用3.0的工具导出类到lua,自动生成代码的方法。
以前要导出c++类到lua,就得手动维护pkg文件,那简直就是噩梦,3.0以后就会感觉生活很轻松了。
下面我就在说下具体做法。
1、安装必要的库和工具包,以及配置相关环境变量,请按照cocos2d-x-3.0rc0;tools;tolua;README.mdown说得去做,不做赘述。
2、写c++类(我测试用的是cocos2d-x-3.0rc0;tests;lua-empty-test;project;Classes;HelloWorldScene.cpp)
3、写一个生成的python脚本,你不会写,没关系,我们会照猫画虎
1)进入目录cocos2d-x-3.0rc0;tools;tolua,复制一份genbindings.py,命名为genbindings_myclass.py
2)把生成目录制定到咱工程里去,打开genbindings_myclass.py把
?
Cocos的基本简介
2015年2月,触控科技正式推出cocos游戏开发一站式解决方案,重新定义无缝的工作流。cocos整合了Cocos 2d-x、Cocos Studio、Cocos Code IDE等框架及工具,为开发者提供了全套的游戏开发解决方案。
Cocos立足于一个更大的视角,它将cocos家族中的所有开发框架、工具和编辑器整合到了一起。如果说Cocos 2d-x是一款游戏开发引擎,那么cocos就是一个完整的游戏开发解决方案。它不再仅仅着眼于游戏编码,而是将对开发者的支持延伸到了整个工作流程,将策划、程序、美术这一开发铁三角都囊括了进来,为手游开发提供了专业可靠的一站式解决方案。
Cocos游戏开发一站式解决方案,包含了从新建立项、游戏制作、到打包上线的全套流程。开发者可以通过cocos快速生成代码、编辑资源和动画,最终输出适合于多个平台的游戏产品。
游戏从创意、开发、测试、上线都有一个完整的流程,触控科技从产品设计角度直接用清晰的脉络把上面提到的这些工具、服务进行了整合,形成最短、最清晰的工作流。这个整合后的产品就是现在的cocos。
原本cocos引擎家族所有独立产品,如Cocos 2d-x引擎框架,Cocos Studio游戏编辑器、Code IDE代码开发工具等,如今都统一在cocos里。
用cocos一定要会代码吗?
C++务必要懂,因为cocos2dx是C++实现的。而且cocos2dx中的API如特效,地图,移动,渲染其风格都带有强烈的winC++ API风格。所以不懂C++肯定无法成为一个优秀的游戏开发者。
给朋友的建议,先搭一个android下cocos2dx的运行环境。随意实现一个简单图片的移动。
9秒学院的视频很有帮助;type=vedio
游戏一般用什么编程语言开发?
一般的大型游戏开发不是单一用某一种软件语言的问题。一个大型游戏的开发需要非常大的团队用各种各样的语言和工具来完成。
总结一下主要有C/C++,汇编语言,着色器语言,脚本语言,高效的开发语言C#或Java。
首先一般的游戏开发架构(Windows平台)从底到顶一般是Direct X?——游戏引擎——游戏。
大型游戏开发的大部分工作其实都是在编写游戏脚本,脚本是大型游戏得以如此高速开发和发布的主要原因。脚本化的开发让游戏开发摆脱了硬编码的种种弊端,让游戏内容可以轻易的修改和调试。比如比较流行的语言。,然后编写脚本将其组织成一个游戏,不需要什么底层的编程语言。
Windows平台比较流行的方法是使用最新版本的Visual Studio,显卡厂商如NVIDIA也会为VS开发一些插件来简化显卡编程和调试。扩展资料:
汇编语言
为了克服机器语言难读、难编、难记和易出错的缺点,人们就用与代码指令实际含义相近的英文缩写词、字母和数字等符号来取代指令代码(如用ADD表示运算符号“+”的机器代码),于是就产生了汇编语言。所以说,汇编语言是一种用助记符表示的仍然面向机器的计算机语言。汇编语言亦称符号语言。
汇编语言由于是采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码。而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
汇编语言中由于使用了助记符号,用汇编语言编制的程序送入计算机,计算机不能象用机器语言编写的程序一样直接识别和执行,必须通过预先放入计算机的 “汇编程序“的加工和翻译,才能变成能够被计算机识别和处理的二进制代码程序。
用汇编语言等非机器语言书写好的符号程序称源程序,运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序,它一经被安置在内存的预定位置上,就能被计算机的CPU处理和执行。
汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性也差。汇编语言是低级语言。但是,汇编语言用来编制系统软件和过程控制软件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。
高级语言
不论是机器语言还是汇编语言都是面向硬件的具体操作的,语言对机器的过分依赖,要求使用者必须对硬件结构及其工作原理都十分熟悉,这对非计算机专业人员是难以做到的,对于计算机的推广应用是不利的。计算机事业的发展,促使人们去寻求一些与人类自然语言相接近且能为计算机所接受的语意确定、规则明确、自然直观和通用易学的计算机语言。
这种与自然语言相近并为计算机所接受和执行的计算机语言称高级语言。高级语言是面向用户的语言。无论何种机型的计算机,只要配备上相应的高级语言的编译或解释程序,则用该高级语言编写的程序就可以通用。
如今被广泛使用的高级语言有BASIC、PASCAL、C、COBOL、FORTRAN、LOGO以及VC、VB等。这些语言都是属于系统软件。
计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过“翻译程序”翻译成机器语言形式的目标程序,计算机才能识别和执行。这种“翻译”通常有两种方式,即编译方式和解释方式。
编译方式是:事先编好一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户由高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果。解释方式是:源程序进入计算机时,解释程序边扫描边解释作逐句输入逐句翻译,计算机一句句执行,并不产生目标程序。
PASCAL、 FORTRAN、COBOL等高级语言执行编译方式;BASIC语言则以执行解释方式为主;而PASCAL、C语言是能书写编译程序的高级程序设计语言。每一种高级(程序设计)语言,都有自己人为规定的专用符号、英文单词、语法规则和语句结构(书写格式)。高级语言与自然语言(英语)更接近,而与硬件功能相分离(彻底脱离了具体的指令系统),便于广大用户掌握和使用。高级语言的通用性强,兼容性好,便于移植
cocos2dx cpp写什么lua写什么
如何在cocos2d c++代码中调用lua以及探究,有需要的朋友可以参考下。
如何在cocos2d c++代码中调用lua
在AppDelegate 中加入了
#include"Lua_extensions_CCB.h"
#include"CCLuaEngine.h"
#include"Lua_web_socket.h"
查到代码加载lua脚步引擎
官方原话注册引擎
CCLuaEngine*pEngine=CCLuaEngine::defaultEngine();
CCScriptEngineManager::sharedManager()-setScriptEngine(pEngine);
和ccb有关的lua
CCLuaStack*pStack=pEngine-getLuaStack();
lua_State*tolua_s=pStack-getLuaState();
tolua_extensions_ccb_open(tolua_s);
和web_socket 相关的lua
pStack=pEngine-getLuaStack();
tolua_s=pStack-getLuaState();
tolua_web_socket_open(tolua_s);
pEngine-executeScriptFile("luaScript/controller.lua");
结束
打开luaScript/controller.lua仔细研究
-- avoidmemory leak
collectgarbage("setpause",100)
collectgarbage("setstepmul",5000)
require"luaScript/mainMenu"
----------------
-- run
local scene =CCScene:create()
scene:addChild(CreateTestMenu())
CCDirector:sharedDirector():runWithScene(scene)
到这里如果熟悉cocos2dx 的朋友就很熟悉了
不错,这里是cocos2d中lua的使用方法和c++中调用差别不大!
但是还没有完
Cocos2dx 对lua的封装是很好的!
如果不熟悉c++与lua的绑定的代码下面的不建议看
C++与lua的绑定传送门
关于cocos2d 与 lua绑定的代码的探究
//打开"CCLuaEngine.h"
单例实现CCScripEngineProtocol
后期应该支持不仅仅只是lua的脚本引擎
头文件有很多方法
挑一个看看
virtualintexecuteNodeEvent(CCNode*pNode,intnAction);
intCCLuaEngine::executeNodeEvent(CCNode*pNode,intnAction)
{
intnHandler=pNode-getScriptHandler();
if(!nHandler)return0;
switch(nAction)
{
casekCCNodeOnEnter:
m_stack-pushString("enter");
break;
casekCCNodeOnExit:
m_stack-pushString("exit");
break;
casekCCNodeOnEnterTransitionDidFinish:
m_stack-pushString("enterTransitionFinish");
break;
casekCCNodeOnExitTransitionDidStart:
m_stack-pushString("exitTransitionStart");
break;
casekCCNodeOnCleanup:
m_stack-pushString("cleanup");
break;
default:
return0;
}
intret=m_stack-executeFunctionByHandler(nHandler,1);
m_stack-clean();
returnret;
}
这里是进入CCNode后的一些消息函数的处理
不管
intret=m_stack-executeFunctionByHandler(nHandler,1);
最终是回到了CCLuaStack
调用了executeFunctionByHandler(nHandler,1);
继续探究
intCCLuaStack::executeFunctionByHandler(intnHandler,intnumArgs)
{
intret=0;
if(pushFunctionByHandler(nHandler)) /* L: ... arg1 arg2 ... func */
{
if(numArgs0)
{
lua_insert(m_state,-(numArgs+1)); /* L: ... func arg1 arg2 ... */
}
ret=executeFunction(numArgs);
}
lua_settop(m_state,0);
returnret;
}
可以看到一些和lua与c++联系的代码了
看看这个类的初始化
boolCCLuaStack::init(void)
{
m_state=lua_open();
luaL_openlibs(m_state);
tolua_Cocos2d_open(m_state);
toluafix_open(m_state);
// Register our version of the global "print"function
constluaL_regglobal_functions[]={
{"print",lua_print},
{NULL,NULL}
};
luaL_register(m_state,"_G",global_functions);
tolua_CocoStudio_open(m_state);
#if(CC_TARGET_PLATFORM==CC_PLATFORM_IOS||CC_TARGET_PLATFORM==CC_PLATFORM_MAC)
CCLuaObjcBridge::luaopen_luaoc(m_state);
#endif
register_all_cocos2dx_manual(m_state);
register_all_cocos2dx_extension_manual(m_state);
register_all_cocos2dx_studio_manual(m_state);
// add cocos2dx loader
addLuaLoader(cocos2dx_lua_loader);
returntrue;
}
这个里的方法看名称应该是注册 coco2dx 中的类到
C++中
register_all_cocos2dx_manual(m_state);
register_all_cocos2dx_extension_manual(m_state);
register_all_cocos2dx_studio_manual(m_state);
详细看
Coco2dx-studio 先不看
头文件
lua_cocos2dx_manual.h
#ifdef__cplusplus
extern"C"{
#endif
#include"tolua++.h"
#ifdef__cplusplus
}
#endif
LUA_APIintregister_all_cocos2dx_manual(lua_State*tolua_S);
头文件
lua_cocos2dx_extensions_manual
#ifdef__cplusplus
extern"C"{
#endif
#include"tolua++.h"
#ifdef__cplusplus
}
#endif
LUA_APIintregister_all_cocos2dx_extension_manual(lua_State*tolua_S);
惊人的相似
看看tolua++.h
真相快水落石出了
这里定义了lua所以用到全部函数
这里是头部,
/* tolua
** Support code for Lua bindings.
** Written by Waldemar Celes
** TeCGraf/PUC-Rio
** Apr 2003
** $Id: $
*/
/* This code is free software; you can redistributeit and/or modify it.
** The software provided hereunder is on an"as is" basis, and
** the author has no obligation to providemaintenance, support, updates,
** enhancements, or modifications.
*/
原来tolua也是lua封装起来的函数库,大师2003 4月就写好了
相当的牛
好上面只看了lua_cocos2dx_extensions_manual.h的头文件
cpp文件我们也一看详情
我发现注册了一些函数
但是不是全部
在CCLuaStack::init()
方法里还有
tolua_Cocos2d_open(m_state);
这个方法
相应的头文件是LuaCocos2d..h
可以打开看看详情
Luacocos2d..cpp注册了n多函数
我用注册是相对于lua而言
Luacocos2d.cpp代码贼多
有兴趣的童鞋可以看看
看来什么时间要看看cocos2d studio 的代码
紧跟时代的步伐
不能老是cocos builder