Cocos2d-x游戏实战指南

相关资料

[

★ 玩电子游戏,是许多人喜欢的休闲活动,而移动游戏的出现,更是大大优化了人们的休闲体验。由于手机使用的方便、快捷,玩家可以把游戏装进自己的口袋——也包括那只可爱的“口袋妖怪Go”。作为一款出色的游戏引擎,Cocos正是这些有趣的移动游戏的开发工具之一。相信所有用过Cocos引擎的程序员都会得出相同的结论:使用Cocos引擎开发的移动游戏能够带来炫酷的效果和与众不同的体验!当然,如果您还没用过Cocos引擎开发游戏,那就请阅读《Cocos2d-x游戏实战指南》吧,相信此书会给您带来耳目一新的体验。
——触控科技副总裁 Jane★ 相信很多游戏玩家都会对如何开发游戏产生浓厚的兴趣,因为玩游戏和开发游戏是完全不一样的体验。玩游戏只能获得精神上的短暂愉悦,而开发一款游戏,将会获得持久的成就感,你甚至会用上帝的视角来审视这些游戏以及游戏中的人物,因为你就是他们的缔造者!你可以任意控制游戏中人物的行动、生存和死亡,可以赋予他们无穷无尽的“洪荒之力”。当然,首先要面临一个问题——先学会游戏开发技术。《Cocos2d-x游戏实战指南》一书将为你提供游戏开发的必要知识和技巧。是做创造者,还是普通玩家,选择权在你手里!
——51CTO学院运营总监 曹亚莉★ 玩电子游戏,是许多人喜欢的休闲活动,而移动游戏的出现,更是大大优化了人们的休闲体验。由于手机使用的方便、快捷,玩家可以把游戏装进自己的口袋——也包括那只可爱的“口袋妖怪Go”。作为一款出色的游戏引擎,Cocos正是这些有趣的移动游戏的开发工具之一。相信所有用过Cocos引擎的程序员都会得出相同的结论:使用Cocos引擎开发的移动游戏能够带来炫酷的效果和与众不同的体验!当然,如果您还没用过Cocos引擎开发游戏,那就请阅读《Cocos2d-x游戏实战指南》吧,相信此书会给您带来耳目一新的体验。
——触控科技副总裁 Jane
★ 相信很多游戏玩家都会对如何开发游戏产生浓厚的兴趣,因为玩游戏和开发游戏是完全不一样的体验。玩游戏只能获得精神上的短暂愉悦,而开发一款游戏,将会获得持久的成就感,你甚至会用上帝的视角来审视这些游戏以及游戏中的人物,因为你就是他们的缔造者!你可以任意控制游戏中人物的行动、生存和死亡,可以赋予他们无穷无尽的“洪荒之力”。当然,首先要面临一个问题——先学会游戏开发技术。《Cocos2d-x游戏实战指南》一书将为你提供游戏开发的必要知识和技巧。是做创造者,还是普通玩家,选择权在你手里!
——51CTO学院运营总监 曹亚莉
★ Cocos2d-x是目前最为流行的开源跨平台游戏引擎,它具有高效、灵活、强大的特点,在全球拥有超过百万的开发者。如果你也想制作出类似于《捕鱼达人》《刀塔传奇》这样的经典作品,《Cocos2d-x游戏实战指南》一定是非常值得阅读的书籍。它既是一本从零开始、循序渐进地学习Cocos2d-x引擎的入门教材;同时也是一本内容详实、示例经典的Cocos2d-x引擎工具书。无论是对于初学者还是游戏开发高手,这本书都可以成为你驾驭Cocos2d-x游戏开发的好帮手。 ——微软开发体验和合作事业部开发技术顾问 梅颖广
★ 手机游戏已经毫无疑问成为了大多数年轻人娱乐的必需品,手机游戏开发也理所当然成了IT行业炙手可热的新兴产业。对于大多数游戏公司来说,招聘优秀的开发人员将成为最重要的工作之一,而由于手机游戏开发程序员仍然极为短缺,所以需要大量的游戏开发方面的图书来培养这方面的人才。《Cocos2d-x游戏实战指南》正是基于这种目的而编写,这本书融合了作者多年的游戏开发经验和丰富的培训经验,深入浅出地介绍了Cocos2d-x各方面的知识,从开发环境搭建,到控件、菜单、Action等常用技术,再到Sprite3D、粒子系统、瓦片地图、物理引擎、骨骼动画、混合开发等高级技术,最后还通过一个完整的游戏案例《星空大战》来贯穿整个知识体系,帮助读者将理论知识和实际项目开发进行完美的结合。综合考虑,这本书比较适合Cocos2d-x游戏开发入门读者,推荐阅读!
——哈尔滨工业大学(威海) 王峥信息

]

本书特色

[

本书深入系统地讲解了Cocos2d�瞲 3.10游戏开发的理论与实践,书中内容涵盖了Cocos2d�瞲 3.x各方面的知识点与示例分析。这些内容包括如何搭建Cocos2d�瞲的开发环境(iOS和Android平台)、Cocos2d�瞲的工程结构、核心类和相关的API、标签、菜单、控件、本地化、事件处理机制、网络技术、动作、调度、绘图API、动画、存储技术、Sprite3D、瓦片地图、粒子系统、物理引擎、骨骼动画、Objective�睠、Swift、C 和Java交互的方式。本书的第18章提供了一个完整的案例——星空大战,这个案例是一款完整的射击类游戏,类似于雷电游戏。该游戏使用了本书介绍的基本知识点,通过这个案例,读者可以更进一步巩固基本理论知识。

]

内容简介

[

《Cocos2d-x游戏实战指南》融合了作者多年的游戏开发经验和丰富的培训经验,深入浅出地介绍了Cocos2d-x各方面的知识,从开发环境搭建,到控件、菜单、Action等常用技术,再到Sprite3D、粒子系统、瓦片地图、物理引擎、骨骼动画、混合开发等高级技术,*后还通过一个完《Cocos2d-x游戏实战指南》融合了作者多年的游戏开发经验和丰富的培训经验,深入浅出地介绍了Cocos2d-x各方面的知识,从开发环境搭建,到控件、菜单、Action等常用技术,再到Sprite3D、粒子系统、瓦片地图、物理引擎、骨骼动画、混合开发等高级技术,*后还通过一个完整的游戏案例《星空大战》来贯穿整个知识体系,帮助读者将理论知识和实际项目开发进行完美的结合。本书配套全新设计的案例演示系统,便于准确寻找对应章节的演示程序;知识点极为丰富,涵盖了所有Cocos2d-x游戏开发的核心内容;通过数万行代码和近百个案例,深入地学习各种开发技巧;商业级游戏案例,体验游戏开发的完整过程。关注本书微信公众号geekculture,获取本书代码文件及更多学习资源……。全书涵盖了以下主题:
(1)Cocos2d-x 3.x开发环境的搭建
(2)Cocos2d-x 3.x的核心类
(3)标签、菜单和控件
(4)如何本地化一款游戏
(5)Cocos2d-x 3.x中的事件处理机制
(6)访问网络
(7)Cocos2d-x 3.x中如何完成各种动作
(8)调度和动画
(9)使用Cocos2d-x 3.x中开发3D游戏
(10)瓦片地图
(11)粒子地图
(12)物理引擎
(13)骨骼动画《Cocos2d-x游戏实战指南》融合了作者多年的游戏开发经验和丰富的培训经验,深入浅出地介绍了Cocos2d-x各方面的知识,从开发环境搭建,到控件、菜单、Action等常用技术,再到Sprite3D、粒子系统、瓦片地图、物理引擎、骨骼动画、混合开发等高级技术,*后还通过一个完
《Cocos2d-x游戏实战指南》融合了作者多年的游戏开发经验和丰富的培训经验,深入浅出地介绍了Cocos2d-x各方面的知识,从开发环境搭建,到控件、菜单、Action等常用技术,再到Sprite3D、粒子系统、瓦片地图、物理引擎、骨骼动画、混合开发等高级技术,*后还通过一个完整的游戏案例《星空大战》来贯穿整个知识体系,帮助读者将理论知识和实际项目开发进行完美的结合。本书配套全新设计的案例演示系统,便于准确寻找对应章节的演示程序;知识点极为丰富,涵盖了所有Cocos2d-x游戏开发的核心内容;通过数万行代码和近百个案例,深入地学习各种开发技巧;商业级游戏案例,体验游戏开发的完整过程。关注本书微信公众号geekculture,获取本书代码文件及更多学习资源……。全书涵盖了以下主题:
(1)Cocos2d-x 3.x开发环境的搭建
(2)Cocos2d-x 3.x的核心类
(3)标签、菜单和控件
(4)如何本地化一款游戏
(5)Cocos2d-x 3.x中的事件处理机制
(6)访问网络
(7)Cocos2d-x 3.x中如何完成各种动作
(8)调度和动画
(9)使用Cocos2d-x 3.x中开发3D游戏
(10)瓦片地图
(11)粒子地图
(12)物理引擎
(13)骨骼动画
(14)Objective C、Swift、C 和Java交互
(15)游戏项目开发 信息

]

作者简介

[

李宁 曾获东北大学计算机专业硕士学位,拥有超过20年软件开发经验、7年移动应用和手机游戏开发经验,欧瑞科技创始人&CEO。获得CVP(Cocos最有价值专家)荣誉称号。长期担任企业内训讲师(已经为上百家企业提供了移动开发培训,培训学员数千名)、高级技术顾问。10年来,出版过超过30本IT图书,并在个人博客撰写了1000万字以上的技术文章。在移动开发领域有极其丰富的经验,领导过团队开发了大量的移动App及游戏产品。先后为多家培训机构开设了移动开发就业课程,被聘为51CTO学院特级讲师。截至目前,已经发布了53个课程 ,累计2279个课时,包括“完全征服React Native”“从零开始掌握Cocos2d-x 3.x”“JavaScript/ES6/ES7系列课程”“iOS8/iOS9系列视频课程”“苹果Swift语言开发精品套餐课程”等,累计培训学员近50万人,好评率达96%。本书配套视频教程《Cocos2d-x 3.x系列》也在51CTO学院独家发布,自上线以来已有近20万名学员学习,受到了51CTO社区广大开发者的一致推崇。

]

目录

目录第1章初识Cocos2d�瞲1.1跨平台的由来1.2跨平台开发模式的种类和优缺点1.2.1虚拟机与跨平台技术1.2.2Web与跨平台技术1.2.3跨平台编译技术1.2.4为每个平台定制本地应用1.3跨平台游戏引擎1.3.1什么是跨平台游戏引擎1.3.2有哪些游戏引擎可以跨平台1.4Cocos2d�瞲横空出世1.4.1Cocos2d�瞲的前世今生1.4.2Cocos2d�瞲的特点目录第1章初识Cocos2d�瞲1.1跨平台的由来1.2跨平台开发模式的种类和优缺点1.2.1虚拟机与跨平台技术1.2.2Web与跨平台技术1.2.3跨平台编译技术1.2.4为每个平台定制本地应用1.3跨平台游戏引擎1.3.1什么是跨平台游戏引擎1.3.2有哪些游戏引擎可以跨平台1.4Cocos2d�瞲横空出世1.4.1Cocos2d�瞲的前世今生1.4.2Cocos2d�瞲的特点1.5小结第2章搭建和使用跨平台Cocos2d�瞲开发环境2.1使用Cocos2d�瞲开发游戏需要准备些什么2.2Cocos2d�瞲 3.10开发环境的*低要求2.3让Eclipse支持C 112.4Cocos2d�瞲 3.10开发环境的安装、配置和使用2.4.1Cocos2d�瞲 3.10的目录结构2.4.2使用cocos建立跨平台工程2.4.3编译和运行Cocos2d�瞲 3.10 for iOS/Mac程序2.4.4编译和运行Cocos2d�瞲 3.10 for Android程序2.4.5编译和运行Cocos2d�瞲 3.10 for Win32程序2.5Cocos2d�瞲 3.10例子代码的使用2.6小结第3章Cocos2d�瞲默认工程模板的架构和源代码分析3.1Cocos2d�瞲实现跨平台的原理3.2默认场景类HelloWorldScene的实现原理分析3.3控制横竖屏切换3.4小结第4章Cocos2d�瞲中的核心类4.1导演类(Director)4.1.1Director类与初始化Cocos2d�瞲4.1.2结束、暂停与恢复Cocos2d�瞲程序4.1.3获取窗口的尺寸和位置4.1.4Director类中的其他成员方法4.2节点类(Node)4.2.1节点类的功能4.2.2节点类的成员方法4.2.3Cocos2d�瞲对象的创建、自动释放(Autorelease)与ARC4.2.4CREATE_FUNC宏与create方法4.2.5Cocos2d�瞲中的坐标系4.2.6节点的移动、缩放和旋转4.3场景类(Scene)4.3.1创建场景4.3.2运行和切换场景4.3.3场景切换的各种特效4.4图层类(Layer)4.4.1Layer类的基本应用4.4.2Layer的子类4.4.3颜色图层类(LayerColor)4.4.4颜色渐变图层类(LayerGradient)4.4.5多图层管理类(LayerMultiplex)4.5精灵类(Sprite)4.5.1Sprite类4.5.2贴图类(Texture2D)和贴图缓冲类(TextureCache)4.5.3精灵批处理类(SpriteBatchNode)4.5.4精灵框架类(SpriteFrame)4.5.5精灵框架缓冲类(SpriteFrameCache)4.5.6九宫格缩放精灵类(Scale9Sprite)4.6集合类(Vector和Map)4.7小结第5章标签、菜单与控件5.1标签类5.1.1LabelTTF标签(使用TTF字体文件)5.1.2LabelAtlas标签(需要截取图像)5.1.3LabelBMFont标签(使用FNT字体文件)5.1.4生成FNT字体文件5.2菜单(Menu)与菜单项(MenuItem)5.2.1Menu类5.2.2标签菜单项(MenuItemLabel)5.2.3字体菜单项(MenuItemFont)5.2.4精灵菜单项(MenuItemSprite)5.2.5图像菜单项(MenuItemImage)5.2.6开关菜单项(MenuItemToggle)5.3控件5.3.1UI布局(Layout)5.3.2文本控件(Text、TextAtlas和TextBMFont)5.3.3按钮控件(Button)5.3.4文本输入框控件(TextField)5.3.5高级文本输入框控件(EditBox)5.3.6复选框控件(CheckBox)5.3.7开关控件(ControlSwitch)5.3.8图像框控件(ImageView)5.3.9进度条控件(LoadingBar)5.3.10滑杆控件(Slider)5.3.11高级滑杆控件(ControlSlider)5.3.12步进控件(ControlStepper)5.3.13列表控件(ListView)5.3.14表格控件(TableView)5.3.15滚动视图控件(ScrollView)5.3.16分页控件(PageView)5.3.17颜色选择控件(ControlColourPicker)5.4小结第6章本地化6.1自适应屏幕分辨率6.1.1尺寸类型及屏幕适配原理6.1.2Cocos2d�瞲中的各种尺寸深度详解6.1.3分辨率策略(ResolutionPolicy)6.1.4通过设计尺寸进行屏幕适配6.1.5通过内容缩放因子进行屏幕适配6.1.6为每一个Node单独调整尺寸6.2Cocos2d�瞲多语言适配6.3小结第7章Cocos2d�瞲中的事件处理机制7.1触摸事件与移动节点7.2多点触摸7.3键盘响应事件7.4鼠标响应事件7.5加速度传感器事件7.6自定义事件7.7小结第8章网络技术8.1HttpClient类8.1.1发送HTTP Get请求8.1.2发送Http Post请求8.2WebSocket类8.3SocketIO类8.4小结第9章Cocos2d�瞲中的动作类9.1所有动作的基类(Action)9.2位置(Position)动作9.2.1沿直线匀速移动动作(MoveBy/MoveTo)9.2.2跳跃动作(JumpBy/JumpTo)9.2.3贝塞尔曲线动作(BezierBy/BezierTo)9.2.4固定张力的样条曲线动作(CatmullRomBy/CatmullRomTo)9.2.5可变张力的样条曲线动作(CardinalSplineBy/CardinalSplineTo)9.3旋转与缩放动作9.3.1旋转动作(RotateBy/RotateTo)9.3.2缩放动作(ScaleBy/ScaleTo)9.4执行规则动作9.4.1顺序执行动作(Sequence)9.4.2并行动作(Spawn)9.4.3重复执行动作(Repeat)9.4.4无限循环动作(RepeatForever)9.4.5反序动作(ResverseTime)9.5控制节点显示和隐藏的动作9.5.1闪烁动作(Blink)9.5.2淡入淡出动作(FadeIn/FadeOut)9.5.3透明度渐变动作(FadeTo)9.5.4颜色渐变动作(TintBy/TintTo)9.6可立即执行的动作9.7回调函数动作(CallFunc/CallFuncN)9.8变速动作(Ease Action)9.8.1幂加速动作(EaseIn)9.8.2幂减速动作(EaseOut)9.8.3幂加速减速动作(EaseInOut)9.8.4指数加速动作(EaseExponentialIn)9.8.5指数减速动作(EaseExponentialOut)9.8.6指数加速减速动作(EaseExponentialInOut)9.8.7正弦加速动作(EaseSineIn)9.8.8正弦减速动作(EaseSineOut)9.8.9正弦加速减速动作(EaseSineInOut)9.8.10弹性加速动作(EaseElasticIn)9.8.11弹性减速动作(EaseElasticOut)9.8.12弹性加速减速动作(EaseElasticInOut)9.8.13弹跳加速动作(EaseBounceIn)9.8.14弹跳减速动作(EaseBounceOut)9.8.15弹跳加速减速动作(EaseBounceInOut)9.8.16回退加速动作(EaseBackIn)9.8.17回退减速动作(EaseBackOut)9.8.18回退加速减速动作(EaseBackInOut)9.9网格动作(Grid Action)9.9.1实现测试网格动作的基类9.9.22D波浪动作(Waves)9.9.33D波浪动作(Waves3D)9.9.4水平3D翻转动作(FlipX3D)9.9.5垂直3D翻转动作(FlipY3D)9.9.63D震动动作(Shaky3D)9.9.73D透镜动作(Lens3D)9.9.83D波纹动作(Ripple3D)9.9.9流体动作(Liquid)9.9.10旋转变形动作(Twirl)9.9.113D瓦片震动动作(ShakeTiles3D)9.9.123D瓦片破碎动作(ShatteredTiles3D)9.9.133D瓦片洗牌动作(ShuffleTiles)9.9.14瓦片从左下角到右上角淡出动作(FadeOutTRTiles)9.9.15瓦片从右上角到左下角淡出动作(FadeOutBLTiles)9.9.16瓦片向上淡出动作(FadeOutUpTiles)9.9.17瓦片向下淡出动作(FadeOutDownTiles)9.9.18关闭瓦片动作(TurnOffTiles)9.9.193D波浪瓦片动作(WavesTiles3D)9.9.203D跳跃瓦片动作(JumpTiles3D)9.9.21拆分行动作(SplitRows)9.9.22拆分列动作(SplitCols)9.9.233D翻页动作(PageTurn3D)9.10其他动作9.10.1绑定节点和动作(TargetedAction)9.10.2扭曲动作(SkewBy和SkewTo)9.10.3轨道照相机动作(OrbitCamera)9.10.4延迟运行动作(DelayTime)9.11小结第10章调度器、绘图API与动画10.1调度器(Scheduler)10.1.1update定时器调度10.1.2设置update定时器的优先级10.1.3自定义调度器10.1.4停止调度器10.2绘图API10.3动画10.3.1基于绘图API与调度器的动画10.3.2帧(Frame)动画10.4小结第11章数据存储技术11.1使用UserDefault读写Key�睼alue类型的数据11.2读写流文件11.3操作XML文件11.3.1使用tinyxml2生成XML文件11.3.2使用tinyxml2以DOM方式读取XML文件11.3.3使用SAXParser以SAX方式读取XML文件11.4使用rapidjson读写JSON文件11.5使用SQLite数据库11.6小结第12章Sprite3D技术12.1什么是Sprite3D12.2Cocos2d�瞲支持哪些3D模型格式12.3装载obj格式的3D模型文件12.4装载和使用c3t和c3b格式的3D模型文件12.4.1使用fbx�瞔onv将fbx转换为c3t和c3b格式12.4.2旋转的3D怪物12.4.3游泳的海龟12.5小结第13章Cocos2d�瞲中的瓦片和地图13.1瓦片和地图编辑器13.1.1瓦片地图的种类和用途13.1.2瓦片地图编辑器(Tiled Map Editor)13.1.3用Tiled编辑地图13.2在Cocos2d�瞲中使用地图13.2.1在程序中显示地图13.2.2隐藏和显示图层13.2.3编辑图块13.2.4获取图块的属性值13.2.5在地图中添加精灵13.2.6让精灵只在道路上移动13.2.7改变遮挡关系(zOrder和PositionZ)13.2.8拖动地图13.2.9在45度角地图上种树13.2.10使用对象层13.3小结第14章粒子系统14.1Cocos2d�瞲内置的标准粒子特效14.1.1群星闪烁14.1.2幽灵鬼火14.1.3群星爆炸14.2粒子特效属性详解14.3自定义粒子特效14.3.1五彩旋转戒指14.3.2放大版的群星闪烁14.4可视化粒子特效设计器14.4.1Particle Designer(仅适用于OS X)14.4.2Particle Editor(只适用于Windows系统)14.5通过plist文件实现粒子特效14.5.1彗星特效14.5.2用plist文件实现放大版的群星闪烁14.6燃烧的圣火14.7小结第15章物理引擎15.1物理引擎概述15.1.1什么是物理引擎15.1.2物理引擎在游戏中的地位15.1.3Box2D和Chipmunk的对比15.2Cocos2d�瞲 3.x中抽象封装的物理引擎15.2.1抽象物理引擎概述15.2.2使用抽象物理引擎创建Body(刚体)15.3Android平台如何使用物理引擎15.4改变Android和iOS平台默认的物理引擎15.5碰撞检测15.6只撞击一侧边缘的碰撞检测15.7足球撞击特效15.8骷髅堆中的足球15.9用重力感应控制的足球15.10小结第16章骨骼动画16.1骨骼动画概述16.2骨骼动画的优势16.3Spine骨骼动画16.3.1Spine骨骼动画简介16.3.2在Cocos2d�瞲中使用Spine骨骼动画16.3.3Spine简介16.3.4用Spine导入骨骼动画图像资源16.3.5完成图像的摆放16.3.6绑定骨骼16.3.7在骨骼上旋转图像16.3.8设计骨骼动画16.4Armature骨骼动画16.4.1安装和运行Cocos Studio16.4.2将图像导入工程16.4.3使用图像资源16.4.4创建骨骼16.4.5绑定骨骼和图像16.4.6设计骨骼动画16.4.7导出骨骼动画16.4.8在Cocos2d�瞲中使用骨骼动画16.5小结第17章Objective�睠、Swift、C 和Java交互17.1C 与Objective�睠的交互17.1.1C 调用Objective�睠 API17.1.2通过Objective�睠获取Web数据17.1.3Objective�睠调用C API17.1.4.mm文件到底起什么作用17.2C 调用Swift API17.2.1创建Swift文件17.2.2编写Swift类17.2.3自动生成的头文件的位置和命名规则17.2.4自动生成的头文件的内容17.2.5自动生成头文件非得用@objc吗17.2.6用Objective�睠调用Swift API17.2.7C 调用Swift API17.3Swift调用Objective�睠 API17.3.1在桥接头文件中引用Objective�睠的头文件17.3.2在Swift源代码文件中调用Objective API17.3.3Objective�睠调用Swift API17.3.4声明和实现C 风格的方法17.3.5C 调用Swift API17.4Android平台多语言交互17.4.1C 调用Java类的无参数静态方法17.4.2C 调用有参数的静态Java方法17.4.3C 调用Java类的非静态方法17.4.4C 调用Java API向SQLite数据库中插入信息(获取Context对象)17.4.5C 调用Java API查询SQLite数据库中的记录17.4.6Java调用C API17.5小结第18章项目实战: 星空大战18.1游戏概述18.2滚动背景18.2.1滚动游戏背景18.2.2让云彩在背景上移动18.3创建战机18.3.1创建战机类18.3.2创建战机图层18.3.3让战机移动18.3.4为战机添加光子鱼雷武器18.3.5为战机添加激光束武器18.3.6为战机添加带有自动跟踪功能的导弹18.3.7让战机发射武器18.4创建敌机18.4.1创建小敌机18.4.2创建大敌机18.4.3敌机发送炮弹18.5小结信息

封面

Cocos2d-x游戏实战指南

书名:Cocos2d-x游戏实战指南

作者:李宁

页数:524

定价:¥79.0

出版社:清华大学出版社

出版日期:2016-11-01

ISBN:9787302447849

PDF电子书大小:113MB 高清扫描完整版

百度云下载:http://www.chendianrong.com/pdf

发表评论

邮箱地址不会被公开。 必填项已用*标注