跳转到内容

其他说明

LayaNative底层渲染使用OpenGL ES渲染,使用android的GLSurfaceView控件和iOS的GLKView控件,所以无法支持第三方地图,如百度地图。

项目中的文本格式文件(例如:ini、xml、html、json、js等)都必须是utf8编码格式,因为iOS设备不支持非utf8格式编码的文件。

LayaNative底层LOG分为五种:

enum class LogType
{
Debug,
Info,
Warn,
Error,
Fatal,
};

每种日志对应的日志级别如下:

enum class LogLevel
{
Debug = 5, // 最详细 - 调试信息
Info = 4, // 一般信息
Warn = 3, // 警告
Error = 2, // 错误
Fatal = 1, // 致命错误
Close = 0, // 关闭所有日志
};

日志级别说明:

  • 数值表示”日志详细程度”,数值越大输出越详细
  • 设置 g_nLogLevel = n 时,输出所有 LogLevel 值 <= n 的日志
  • 默认值为 5(Debug),表示输出所有级别的日志

在js脚本中,开发者可以通过以下函数设置日志级别,默认值为5:

if (window.conch)
{
// 日志级别设置说明:
// 值为0:关闭所有日志输出
// 值为1:只输出 Fatal(致命错误)日志
// 值为2:输出 Fatal + Error(错误)日志
// 值为3:输出 Fatal + Error + Warn(警告)日志
// 值为4:输出 Fatal + Error + Warn + Info(信息)日志
// 值为5:输出所有日志,包括 Debug(调试)日志(默认值)
//
// 过滤规则:值为n时,输出所有 LogLevel <= n 的日志
window.conchConfig.setLogLevel(2);
}

Tips 1、conch只能LayaNative环境下调用,在网页版本中是没有conch定义的,所以需要判断一下是否存在。

在iOS平台下对接微信SDK,微信1.77版本以后需要增加-Objc的参数,微信的官方文档中默认让增加-Objc -all_load,但是这样会导致编译报错。 遇到到这种情况可以把参数变成 -Objc -force_load libWeChatSDK.a,配置后,如图1所示:

1

LayaNative支持iOS模拟器,但是由于模拟器运行效率比较低,建议开发者使用iOS真机调试。

函数名称函数说明返回值说明备注
getTotalMem()获得运行设备总内存单位为KB
getUsedMem()获得当前应用程序占用的内存单位为KB返回值不太准确,但是可以作为参考
getAvalidMem()获得可用的内存单位为KB返回值不太准确,但是可以作为参考
getNetworkType()获得网络状态返回int值,NET_NO = 0;NET_WIFI = 1;NET_2G = 2;NET_3G = 3;NET_4G = 4;NET_UNKNOWN=5
getRuntimeVersion()获得Runtime的版本返回值是一个字符串,格式为平台-conch6-release-版本号,类似ios-conch6-release-3.4.0、android-conch6-release-3.4.0。平台前缀有ios、android、window、ohos、linux五种
getAppVersion()获得iOS-App的版本号返回字符串 1.1iOS-app的版本号,通过这个版本号,可以做APP的更新提示。
getAppLocalVersion()获得iOS-App的Local版本号返回字符串1.2iOS-app的版本号,通过这个版本号,可以做APP的更新提示。

这些函数都属于conchConfig类的函数,调用实例:

if (window.conch)
{
window.conchConfig.getRuntimeVersion();
}

Tips 1、conch只能LayaNative环境下调用,在网页版本中是没有conch定义的,所以需要判断一下是否存在。

项目运行过程中有时会弹出一些错误的提示,这些提示都是项目中有代码写错了。我们的建议是解决掉这些错误弹框里边的错,如果实在是解决不掉再去屏蔽。
是否显示报错弹框在IDE项目设置—> 杂项—> 弹窗显示全局错误选项进行设置,如图2所示:

2

8. 引擎初始化或加载启动脚本过程中的异常处理

Section titled “8. 引擎初始化或加载启动脚本过程中的异常处理”

在LayaNative版本中,当引擎初始化、加载启动脚本过程中,如果发生异常(如网络不稳定),引擎会自动调用到window.onLayaInitError(error)函数,该函数默认在config.js中定义,代码如下:

window.onLayaInitError = function(e)
{
console.log("onLayaInitError error=" + e);
alert("加载游戏失败,可能由于您的网络不稳定,请退出重进");
}

开发者可以根据自己需求,修改报错信息和报错方式。

Version >= LayaAir 3.4 类似微信小游戏接口,获取窗口信息,包括屏幕尺寸、窗口尺寸、状态栏高度、安全区域等信息。

返回一个对象,包含以下属性:

属性类型说明
pixelRationumber设备像素比
screenWidthnumber屏幕宽度,单位px
screenHeightnumber屏幕高度,单位px
windowWidthnumber可使用窗口宽度,单位px
windowHeightnumber可使用窗口高度,单位px
statusBarHeightnumber状态栏的高度,单位px。LayaNative中没有小游戏中的状态栏,这里返回的是安全区域的顶部内边距(safeTop),与safeArea.top一致
safeAreaObject在竖屏正方向下的安全区域。部分机型没有安全区域概念,也不会返回 safeArea 字段,开发者需自行兼容。
safeArea.leftnumber安全区域左上角横坐标
safeArea.rightnumber安全区域右下角横坐标
safeArea.topnumber安全区域左上角纵坐标
safeArea.bottomnumber安全区域右下角纵坐标
safeArea.widthnumber安全区域的宽度,单位逻辑像素
safeArea.heightnumber安全区域的高度,单位逻辑像素
screenTopnumber窗口上边缘的y值
if (window.conch)
{
const windowInfo = window.conch.getWindowInfo();
console.log("设备像素比:", windowInfo.pixelRatio);
console.log("屏幕宽度:", windowInfo.screenWidth);
console.log("屏幕高度:", windowInfo.screenHeight);
console.log("窗口宽度:", windowInfo.windowWidth);
console.log("窗口高度:", windowInfo.windowHeight);
console.log("状态栏高度:", windowInfo.statusBarHeight);
console.log("窗口上边缘y值:", windowInfo.screenTop);
if (windowInfo.safeArea) {
console.log("安全区域:", JSON.stringify(windowInfo.safeArea));
}
}

Version >= LayaAir 3.4

类似微信小游戏接口,获取设备基础信息,包括设备品牌、型号、操作系统等信息。

返回一个对象,包含以下属性:

属性类型说明
abistring应用二进制接口类型(仅 Android HarmonyOS 支持)
deviceAbistring设备二进制接口类型(仅 Android HarmonyOS 支持)
brandstring设备品牌
modelstring设备型号。新机型刚推出一段时间会显示unknown,会尽快进行适配。
systemstring操作系统及版本
platformstring客户端平台,合法值见下表
cpuTypestring设备CPU型号(仅 Android 支持)
memorySizestring设备内存大小,单位MB

platform 合法值:

说明
iosiOS 平台(包含 iPhone、iPad)
androidAndroid 平台
ohosHarmonyOS 手机端平台
ohos_pcHarmonyOS PC平台
windowsWindows 平台
linuxLinux 平台
if (window.conch)
{
const deviceInfo = window.conch.getDeviceInfo();
console.log("应用二进制接口类型:", deviceInfo.abi);
console.log("设备二进制接口类型:", deviceInfo.deviceAbi);
console.log("设备品牌:", deviceInfo.brand);
console.log("设备型号:", deviceInfo.model);
console.log("操作系统:", deviceInfo.system);
console.log("客户端平台:", deviceInfo.platform);
console.log("CPU型号:", deviceInfo.cpuType);
console.log("设备内存:", deviceInfo.memorySize, "MB");
}