Unity打包出来的IOS应用在切出切入的时候关于字体丢失或者显示不全解决方案

1 篇文章 1 订阅

1、遇到的问题
在使用Unity打包出来的IOS应用的时候,当外部来了一个电话或者需要去微信回一个消息的时候,需要我们离开当前Unity打包出来的IOS应用,当我们再次回到Unity打包出来的IOS应用的时候,就会碰到如下问题,字体内容显示成方块或者是缺失。
在这里插入图片描述
2、解决方案
1、在项目中新建一个名为CanvasUpdate的C#文件,然后粘贴以下代码到新建的这个C#文件中。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class CanvasUpdate : MonoBehaviour
{
    public static CanvasUpdate Main;
    private int Num = 0;
    private Font FontValue;
    public Transform UINode;
    public Font ArialFontValue;

    private void Start()
    {
        Main = this;
    }
    private void OnApplicationFocus(bool hasFocus)
    {
        if (hasFocus)
        {
            // 应用程序从后台切回前台
            Debug.Log("应用程序切回前台");
            //FontValue = Resources.Load<Font>("MSYH");
            // 执行相应的操作
            OnFixFont(true);
        }
    }

    public void OnUpdateFont()
    {
        OnFixFont(true);
    }

    public void OnFixFont(bool NewFontUse)
    {
        if(NewFontUse)
        {
            //Font.CreateDynamicFontFromOSFont("字体名称", 字体大小);
            FontValue = Font.CreateDynamicFontFromOSFont("Arial", 16);
        }
        //bool use = false;

        //foreach (Text er in GameObject.FindObjectsOfType<Text>())
        //{
        //    er.GetComponent<Text>().font = FontValue;
        //}
        foreach (Text er in UINode.GetComponentsInChildren<Text>(true))
        {
            er.GetComponent<Text>().font = FontValue;
            er.GetComponent<Text>().alignByGeometry = true;
            //if (er.GetComponent<CanvasUUID>() == null)
            //{
            //    if(!use)
            //        DebugText.text += "OnUpdateUINODE" + "\n";

            //    //er.GetComponent<RectTransform>().sizeDelta *= 1.2f;
            //    use = true;
            //    er.gameObject.AddComponent<CanvasUUID>();
            //}
        }

    }
}

保存代码之后,回到Unity中,把CanvasUpdate的C#文件挂载到场景中的游戏物体上,然后把有问题的Text组件所依赖的父物体Cancas赋给UINode字段的值。(作者这里是TexasCanvas物体下的子物体Text出现了问题)
在这里插入图片描述

在这里插入图片描述
然后把有问题的Text组件中所依赖的字体文件赋给ArialFontValue字段的值。(作者这里是Unity中默认字体Arial出现了问题)
在这里插入图片描述
3、测试
以上步骤都做完后,就可以保存游戏场景,打IOS包进行测试了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Defining the Future

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值