Unity发布Webgl坑记录

UnityWebgl不完全支持多线程,特别是Task.Delay,需要使用协程进行延迟操作。对于图片空白问题,可能发生在图片直接使用而非图集时。为了减小打包体积,可以启用代码剥离,但需处理可能的类缺失问题,通过link.xml文件指定保留关键类。
摘要由CSDN通过智能技术生成

Unity Webgl对多线程不完全支持

  • 目前所知对Task.Delay不支持,延迟使用协程替换:

        // 延时任务服务
    public class DelayTaskService : Singleton<DelayTaskService>
    {
        public delegate void TaskCallback();
    
        public Coroutine Run(float delayTime, TaskCallback callback)
        {
            return StartCoroutine(DelayRun(delayTime, callback));
        }
    
        public Coroutine Run(TaskCallback callback)
        {
            return StartCoroutine(DelayRun(callback));
        }
    
        public void StopTask(Coroutine coroutine)
        {
            StopCoroutine(coroutine);
        }
    
        private IEnumerator DelayRun(float delayTime, TaskCallback callback)
        {
            yield return new WaitForSecondsRealtime(delayTime);
            callback?.Invoke();
        }
    
        private IEnumerator DelayRun(TaskCallback callback)
        {
            yield return null;
            callback?.Invoke();
        }
    }
    

Unity Webgl图片空白问题

  • 某些图片在图集中,但是某些部分静态使用这些图片(图片直接拖入),打包webgl会导致图片空白

Unity Webgl打包代码剥离设置

  • Player Settings ➜ Other Settings ➜ Strip Engine Code勾上

  • Player Settings ➜ Other Settings ➜ Managed Stripping Level调整为最高
    在这里插入图片描述

  • 打包设置为下图

    在这里插入图片描述
    【注意】这样会打出的包最小,但是会造成某些类的缺失,在Unity/Assets下创建link.xml文件,根据报错的ID通过Unity类ID查找添加到link文件中(相当于代码剥离的白名单),link文件格式如下:

<linker>
    <assembly fullname="Unity.Timeline" preserve="all" />
    <assembly fullname="DOTween" preserve="all" />
    <assembly fullname="Assembly-CSharp" preserve="all" />
    <assembly fullname="HotFix" preserve="all" />

    <assembly fullname="UnityEngine">
        <type fullname="UnityEngine.SphereCollider" preserve="all"/>
		<type fullname="UnityEngine.AudioListener" preserve="all"/>
    </assembly>
	<assembly fullname="UnityEditor">
		<type fullname="UnityEditor.PlayerSettings" preserve="all"/>
	</assembly>
</linker>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值