方案一、导出WebGL运行在WKWebView上(方案不适用)

  • 不建议采用;不建议深挖
  • 移动端网页仅适用于Unity小游戏,不适用于大型Unity游戏。PC可正常运行
  • 游戏本身兼容性并不是大问题,主要还是内存原因无法在移动端网页运行
  • WebView内存分配不足以支撑。经测试手机最多可分配1G内存供Web使用,超出1G,如果手机性能高,会弹出请求分配更多内存的提示;否则直接崩溃,无法进入游戏
  • 手机性能高,勉强能够进入游戏,但持续运行,手机发烫严重,请谨慎尝试。高内存场景也无法进入
  • 手机性能低,Unity进度条加载完毕,网页直接崩溃
  1. Unity项目导出WebGL,直接让其运行在PC浏览器上,可正常运行。不过有些UI无法显示,经分析是有些插件不兼容WebGL,可通过更换插件支持。

  2. 让其运行在手机浏览器,弹出错误提示: 在这里插入图片描述
    点击OK后,加载一会一直白屏。以为WebGL无法运行在手机端。就考虑第二套方案了(Unity与原生混合开发)。回过头来再分析此问题时,发现,此提示只是一个警告,可通过修改 UnityLoader.js 文件的方法避开此提示。如下注释掉原方法实现,改成 直接回调 t(); (此js文件是未格式化的,可以使用此
    格式化工具

    compatibilityCheck: function(e, t, r) {
            // UnityLoader.SystemInfo.hasWebGL ? UnityLoader.SystemInfo.mobile ? e.popup("Please note that Unity WebGL is not currently supported on mobiles. Press OK if you wish to continue anyway.", [{
            //     text: "OK",
            //     callback: t
            // }]) : ["Edge", "Firefox", "Chrome", "Safari"].indexOf(UnityLoader.SystemInfo.browser) == -1 ? e.popup("Please note that your browser is not currently supported for this Unity WebGL content. Press OK if you wish to continue anyway.", [{
            //     text: "OK",
            //     callback: t
            // }]) : t() : e.popup("Your browser does not support WebGL", [{
            //     text: "OK",
            //     callback: r
            // }])
            t();
    

    此问题解决后,然而并没有解决无法进入游戏的问题。猜测可能是内存问题引起的,经查资料,尝试看能不能指定内存打包,结果2019版本的unityIDE不支持修改MemorySize的设定。(如图无法设置)

    在这里插入图片描述
    继续查找问题原因,通过Unity IDE查看此游戏启动所占用的内存,发现启动占用了近2G的内存。为了验证是否是内存不足导致的。尝试创建了一个新的项目,里面随意放几个组件,看是否能正常运行在手机端。发现可正常运行。问题越来越接近猜测了。再在网上找了几个小项目去尝试,也可正常运行。

    接下来,只要进一步验证到底是游戏项目的问题,还是内存的问题即可。

    因为刚开始我使用的是iPhone 6sp 尝试的。想着找一台性能高的手机看看。如果可以运行,就肯定是内存问题。经尝试。猜测是正确的。在iPhone XS Max上可以进入游戏首页,不过点击进入游戏场景,网页就崩溃了。而且内存占用极大,手机发烫严重。赶紧杀死网页,停止尝试。

    问题到此结束了,在移动端根本无法使用,此方案被Pass。从而得出了开头给出的结论。

    在这里插入图片描述

方案二、Unity与原生混合开发

官方参考示例: 将 Unity 集成到原生 iOS 应用程序中

  • 多工程项目
  • 可运行,不过打出的包会很大,根据取舍自行考量
  1. 保证导出的 Unity iOS工程可正常运行在手机上。
    其中遇到报错脚本不执行如下:
    /Users/xxxx/Desktop/yinghua2020Ios/MapFileParser.sh: Permission denied
    执行命令修改权限即可
    chmod a+x "/Users/xxxx/Desktop/NativeBrige/yinghua2020Ios/process_symbols.sh"
  2. 可运行,不过有几率闪退
    通过导出项目选择的渲染方式解决。
    OpenGL2.0 或 OpenGL3.0 方式 更换成 Metal 方式
class ViewController in Interface Builder file.
CrashReporter: initialized
2020-10-14 16:42:14.464216+0800 NativeiOSApp[6896:858416] Built from '2019.4/china_unity/release' branch, Version '2019.4.9f1 (ba291d946e84)', Build type 'Release', Scripting Backend 'il2cpp'
-> applicationDidFinishLaunching()
2020-10-14 16:42:14.597049+0800 NativeiOSApp[6896:858416] Metal API Validation Enabled
-> applicationWillEnterForeground()
-> applicationDidBecomeActive()
[Subsystems] Discovering subsystems at path /var/containers/Bundle/Application/19D8DA15-9798-4373-977D-F28DDBFB24F5/NativeiOSApp.app/Frameworks/UnityFramework.framework/Data/UnitySubsystems
GfxDevice: creating device client; threaded=1
Renderer: Apple A9 GPU
Vendor:   Apple Inc.
Version:  OpenGL ES 2.0 Metal - 66.6
GLES:     2
 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_depth24 GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_vertex_array_object GL_EXT_blend_minmax GL_EXT_color_buffer_half_float GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_draw_instanced GL_EXT_instanced_arrays GL_EXT_map_buffer_range GL_EXT_occlusion_query_boolean GL_EXT_pvrtc_sRGB GL_EXT_read_format_bgra GL_EXT_separate_shader_objects GL_EXT_shader_framebuffer_fetch GL_EXT_shader_texture_lod GL_EXT_shadow_samplers GL_EXT_sRGB GL_EXT_texture_filter_anisotropic GL_EXT_texture_rg GL_EXT_texture_storage GL_APPLE_clip_distance GL_APPLE_color_buffer_packed_float GL_APPLE_copy_texture_levels GL_APPLE_framebuffer_multisample GL_APPLE_rgb_422 GL_APPLE_sync GL_APPLE_texture_format_BGRA8888 GL_APPLE_texture_max_level GL_APPLE_texture_packed_float GL_IMG_
read_format GL_IMG_texture_compression_pvrtc
OPENGL LOG: Creating OpenGL ES 2.0 graphics device ; Context level  <OpenGL ES 2.0> ; Context handle -2126231072
OPENGL LOG: OpenGLES2 is deprecated on this platform
Initialize engine version: 2019.4.9f1 (ba291d946e84)
CrashReporter: No pending report exists at /var/mobile/Containers/Data/Application/A26F5888-B414-4B87-9645-D3A0FAABCE70/Library/Caches/CrashReports/crash-pending.plcrash
                                    资源名称:iOS游戏开发Unity3D引擎系列资源目录:【】Unity3D 游戏引擎之IOS自定义游戏摇杆与飞机平滑的移动【】Unity3D 游戏引擎之IOS触摸屏手势控制镜头旋转与缩放【】Unity3D 游戏引擎之IOS高级界面发送消息【】Unity3D 游戏引擎之回馈IOS高级界面消息【】Unity3D 游戏引擎之平面小球重力感应详解【IT教
资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
                                    Unity发布到iOS平台得到的是一个Xcode工程,这个Xcode工程可以直接编译运行,但是我们现在已经有个iOS项目了,Unity是作为项目的一部分,所以需要在已有的Xcode工程中集成Unity。环境:Xcode 9  +  Unity 2017。Unity导出时设置图形API不要用Metal,因为我发现按我的集成方法使用Metal会崩,不知道什么原因。...
                                    最近学车一个月了,每周放假顶着大太阳在驾校排车练车,所以也没怎么搞学习了,就练车排队的时候拿个手机在那刷着玩。
 偶尔逛下qq群聊,在部分unity开发群经常听到一股声音:unity怎么还不支持手机小程序?还不能支持微信运行?tinymode啥时候出来啊?
 其实unity的webgl很早就支持手机端运行了,只是unity官方觉得webgl版本在性能和易用性上并不完善,所以一直屏蔽webgl在手机端运行而已,对于这种屏蔽我们随意修改一个函数即可。
 我们现...
Unity Profiler链接安卓手机调试一般通过USB连接手机并通过ADB来connect:
https://www.cnblogs.com/fengxing999/p/9958593.html
https://blog.csdn.net/BillCYJ/article/details/81664215
https:...
	//玩家切后台的运行时间
	float startHTtime = 0;
	//倒计时的显示停止期限 下线    保留致少是2 这样可以在倒计时玩家切回来倒计时的循环中--致少会在循环两边 这样使得循环方法中的更新相关数据!!!
	int DtimeNum = 2;
	/// <summary&g
                                    在SDK开发当中,将资源打包成resource.bundle文件,资源加载的代码:
/// 加载bundle文件中的图片
+ (UIImage *)classFunc_imageBundleWithName:(NSString *)imageName {
    return [UIImage imageNamed:[NSString stringWithFormat:@"XHSDKResource.bundle/%@", imageName]];
Demo接入SDK的时候只需要把resou
                                    本演示XCODE版本为11以上,如若找不到对应的未知,可查找当前XCODE版本查找。
问题1:ERROR ITMS-90339: "This bundle is invalid. The Info.plist contains an invalid key 'UIApplicationExitsOnSuspend' in bundle test [test.app]
解决办法: 点击全局搜索-...