unity发布WebGL遇到的坑(持续更新)
1、unity默认字体在网页中不会显示
解决方法:自己新导入一个字体,使用导入的字体
2、之前打过包并运行过,后面又在unity中进行了修改,重新打包,运行发现还是修改之前的效果,虽然是新包,
解决方法:这是因为网页中有缓存, 点击浏览器右边的三个点,选择设置–隐私、搜索与服务–清除浏览数据,清除后重新运行
3、如果unity 里使用了ILRintime热更新,和DoTween插件,在热更里使用了DoTween,运行WebGL时运行到Do处代码会报错。
Cannot find Type:DG.Tweening.ShortcutExtensions
at ILRuntime.Runtime.Enviorment.AppDomain.GetType (System.Object token, ILRuntime.CLR.TypeSystem.IType contextType, ILRuntime.CLR.Method.IMethod contextMethod) [0x00000] in <00000000000000000000000000000000>:0
解决方法:在unity里把Do的功能重新封装一下,然后在热更里掉用封装好的类
using DG.Tweening;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class DoTweenTool
{
private static DoTweenTool _instance;
public static DoTweenTool Instance
{
get
{
if (_instance == null)
{
_instance = new DoTweenTool();
}
return _instance;
}
}
Dictionary<string, Tween> tweenDic = new Dictionary<string, Tween>();
public void DoColor( Image target,Color endValue,float duration)
{
Tween tween= target.DOColor( endValue, duration);
if(!tweenDic.ContainsKey(target.name))
{
tweenDic.TryAdd(target.name, tween);
}
}
public void DOAnchorPosX(RectTransform target,float endValue,float duration)
{
Tween tween= target.DOAnchorPosX(endValue, duration);
if (!tweenDic.ContainsKey(target.name))
{
tweenDic.TryAdd(target.name, tween);
}
}
public void DOText(Text target,string content,float duration,Action action)
{
Tween tween= target.DOText(content, duration).SetEase(Ease.Linear).OnUpdate(()=> { action?.Invoke(); });
if (!tweenDic.ContainsKey(target.name))
{
tweenDic.TryAdd(target.name, tween);
}
}
public void DOLocalMoveX(Transform target,float endValue,float duration)
{
Tween tween = target.DOLocalMoveX(endValue, duration);
if (!tweenDic.ContainsKey(target.name))
{
tweenDic.TryAdd(target.name, tween);
}
}
public void Kill(string name)
{
if (tweenDic.ContainsKey(name))
{
tweenDic.Remove(name);
}
}
}