这门课解决什么问题

做 Cocos2d-x 3.x 游戏开发的人,大概率会遇到同一个坎:游戏核心逻辑用 C++ 写,但接 iOS 平台能力(比如内购、广告、系统弹窗、网络请求)时,必须调用 Objective-C 或 Swift 的 API。多数教程只讲 C++ 怎么写游戏,碰到跨语言调用就一句“自己查文档”带过,结果你卡在桥接层好几天,编译报错都不知道去哪改。

这门课就是专门拆解这个桥接层的。它不教你写游戏逻辑,也不讲 Cocos 引擎的渲染或动画,而是把“C++ ↔ Objective-C”和“C++ ↔ Swift”这两组双向调用,用十几个小节挨个讲透。比如 C++ 怎么拿到 Objective-C 对象的实例、怎么调用它的方法;反过来 Objective-C 代码怎么构造一个 C++ 对象并调用其函数。Swift 部分同样覆盖原理、准备工作和具体写法。学完后,你至少能独立完成“在 Cocos 的 C++ 层里调起一个 iOS 原生分享面板”或“把 Swift 写的支付模块接到 C++ 游戏里”这类日常需求。

适合什么基础的人

这门课不是给纯新手准备的。你需要先满足三个条件:第一,已经用 Cocos2d-x 3.x 写过至少一个能跑起来的小项目,知道场景、精灵、调度器大概是什么;第二,C++ 语法基本过关,至少看得懂类、指针、头文件和源文件的区别;第三,对 Objective-C 或 Swift 有最基础的认知——不用熟,但得知道 .m、.mm、.swift 文件分别是什么,以及“方法调用”和“消息发送”的大致区别。如果你完全没碰过 iOS 开发,建议先花一两天看一遍 Objective-C 的类定义和消息语法,再来学这门课会顺畅很多。

如果你已经做过 iOS 原生开发,只是不熟 Cocos 的 C++ 侧,那这门课对你来说会特别轻松——你缺的只是“从 C++ 视角看 iOS 代码”的转换思路,课里正好补这块。

建议先看哪几块,怎么配合练习

第一个重点块是第一部分的第 1~4 小节(C++ 调用 Objective-C API 的原理和编写过程)。这四节是整套桥接的骨架,讲清楚了“为什么 C++ 不能直接调 Objective-C,但通过 .mm 文件就可以”这个核心问题。跟着写一遍 Mixture 类,别只看不敲。

第二个重点块是第一部分的第 6~10 小节(Objective-C 调用 C++ API)。这四节是反向操作,原理类似但细节不同,比如 .mm 和 .m 文件的区别、编译单元怎么处理。建议你先把第 1~4 小节的代码跑通,再动手写这四节,体会两个方向在写法上的差异。

第三部分是 C++ 与 Swift 的交互,共几节(视文件而定)。Swift 和 Objective-C 的桥接方式不一样,Swift 类要暴露给 C++ 需要经过一层 Objective-C 中转。这一块建议放最后学,因为你需要先熟悉前两部分的术语和文件组织方式。

练习方式很具体:不要再开新项目,就在你现有的 Cocos 项目里,把一段原本写在 C++ 里的假支付逻辑,改成调用 Objective-C 的 StoreKit 代码(哪怕只是打印一条日志)。然后反过来,写一个 Swift 类,从 C++ 里调用它,实现一个简单的“读取设备电量”功能。这两个练习做完,桥接层对你来说就不再是黑盒了。

资料包里还有一节“C++ 通过 Cocoa Framework API 访问网络”,建议放在最后看——它综合演示了前面所有知识点,能让你看到一次完整的“C++ 发起、Objective-C 执行、回调回 C++”的流程。学完这一节,你就能独立处理大部分“游戏要接 iOS 原生能力”的需求了。

课程目录

课程目录32 集
  • 1-1 [Objective-C与C++之间的交互] C++调用Objective-C API原理 (31:16).mp4
  • 1-2 [Objective-C与C++之间的交互] C++调用Objective-C API(1):编写Objective-C类 (15:08).mp4
  • 1-3 [Objective-C与C++之间的交互] C++调用Objective-C API(2):编写混合调用类Mixture (10:43).mp4
  • 1-4 [Objective-C与C++之间的交互] C++调用Objective-C API(3):C++调用Objective-C类方法 (09:43).mp4
  • 1-5 [Objective-C与C++之间的交互] C++通过Cocoa Framework API访问网络 (19:47).mp4
  • 1-6 [Objective-C与C++之间的交互] Objective-C调用C++ API原理 (05:22).mp4
  • 1-7 [Objective-C与C++之间的交互] Objective-C调用C++ API(1):创建C++类 (02:53).mp4
  • 1-8 [Objective-C与C++之间的交互] Objective-C调用C++ API(2):创建mm文件 (05:15).mp4
  • 1-9 [Objective-C与C++之间的交互] Objective-C调用C++ API(3):创建m文件 (03:25).mp4
  • 1-10 [Objective-C与C++之间的交互] Objective-C调用C++ API(4):最后收官 (08:03).mp4
  • 2-1 [C++与Swift之间的交互] C++调用Swift API(1):原理和准备工作 (06:03).mp4
  • 2-2 [C++与Swift之间的交互] C++调用Swift API(2):编写Swift类 (09:09).mp4
  • 2-3 [C++与Swift之间的交互] C++调用Swift API(3):自动生成Swift头文件 (06:25).mp4
  • 2-4 [C++与Swift之间的交互] C++调用Swift API(4):@objc是必须的吗 (05:10).mp4
  • 2-5 [C++与Swift之间的交互] C++调用Swift API(5):用Objective-C调用Swift API (07:44).mp4
  • 2-6 [C++与Swift之间的交互] C++调用Swift API(6):完成最后的调用工作 (13:24).mp4
  • 3-1 [Objective-C与Swift之间的交互] Swift调用Objective-C API(1):原理与调用 (07:10).mp4
  • 3-2 [Objective-C与Swift之间的交互] Swift调用Objective-C API(2):Objective-C调用Swift API (03:51).mp4
  • 3-3 [Objective-C与Swift之间的交互] Swift调用Objective-C API(3):C++调用Objective-C API (01:29).mp4
  • 3-4 [Objective-C与Swift之间的交互] Swift调用Objective-C API(4):最后的调用 (06:05).mp4
  • 4-1 [C++与Java之间的交互] C++调用Java API(1):准备工作 (08:51).mp4
  • 4-2 [C++与Java之间的交互] C++调用Java API(2):编写被C++调用的静态Java方法 (04:12).mp4
  • 4-3 [C++与Java之间的交互] C++调用Java API(3):调用静态无参数的Java方法 (25:31).mp4
  • 4-4 [C++与Java之间的交互] C++调用Java API(4):调用静态有参数的Java方法 (08:41).mp4
  • 4-5 [C++与Java之间的交互] C++调用Java API(5):调用Java成员方法(1) (16:42).mp4
  • 4-6 [C++与Java之间的交互] C++调用Java API(6):调用Java成员方法(2) (07:23).mp4
  • 4-7 [C++与Java之间的交互] C++通过Java API读写数据库(1):编写可以插入记录的Java方法 (10:01).mp4
  • 4-8 [C++与Java之间的交互] C++通过Java API读写数据库(2):C++调用Java方法插入数据 (11:35).mp4
  • 4-9 [C++与Java之间的交互] C++通过Java API读写数据库(3):编写用于查询数据的Java方法 (13:40).mp4
  • 4-10 [C++与Java之间的交互] Java调用C++ API(1):编写调用C++类方法的Java方法 (02:39).mp4
  • 4-11 [C++与Java之间的交互] Java调用C++ API(2):编写调用C++类方法的NDK函数 (06:40).mp4
  • 4-12 [C++与Java之间的交互] Java调用C++ API(3):最后的调用 (07:36).mp4