关于字体:对于字体裁剪生僻字的做法

1)对于字体裁剪生僻字的做法2)协程中yield return CoFunction()和yield return StartCoroutine(CoFunction())的区别3)Unity切换场景时对技能特效首次开释卡顿4)《SLG手游的制作与优化》中Shadowmap优化的疑难 这是第324篇UWA技术常识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地把握和学习。 UWA社区主页:answer.uwa4d.comUWA QQ群:465082844 FontQ:咱们我的项目中应用的中文字体TTF文件大于10MB,于是采纳了通用的裁剪生僻字的做法,把字体中低频应用的字形数据删掉了,然而我的项目又有取名相干的需要,并且在玩家取名实现后无论是大厅主界面还是战斗界面都有显示玩家名字的需要,那么在这种状况下有什么办法既能兼容玩家取名一些被裁剪掉的生僻字,又可能无效升高字体TTF Asset内存的做法呢? 我的意思并不是指升高字体图集的大小,而是升高原字体TTF文件的大小。 A:我有个思路题主能够思考试一下: 首先是一个前提,就是TMP图集的内存优化做法:是我参考了UWA DAY 2022中的议题《Unity移动游戏性能优化案例剖析》结尾左右的一个分享。简略来说,就是在游戏我的项目中应用TMP计划时,很多时候内存中会用到一张4096x4096分辨率的Alpha格局的动静图集纹理,内存占用高达32MB。优化形式就是将罕用字符构建为4096x4096的一张动态图集,并通过代码替换纹理、设置压缩格局(如ASTC8x8),则内存降至仅4MB。此时再应用一张512x512的动静图集作为它的Fallback,就能解决生僻字需要了。 基于上述的做法,咱们还晓得TMP中打动态图集后是能够解除对TTF文件的援用的,没有援用,也就不必打进包体、加载进内存;但问题在于,那张小的、用来解决生僻字的动静图集还是要援用TTF能力在运行时生成。那么,咱们就能够思考反向裁剪,也就是只把TTF里的曾经打进动态图集里的常用字裁剪掉而保留生僻字,再把这个解决过的TTF资源作为那张动静图集的援用对象。 通过下面这一系列操作,字体图集纹理和TTF文件的内存占用应该都升高了,同时实践上能达成题主的性能需要。 感激Faust@UWA问答社区提供了答复 ScriptQ:请问协程中yield return CoFunction()和yield return StartCoroutine(CoFunction())有什么区别? 针对以上问题,有教训的敌人欢送转至社区交换分享 PerformanceQ:在切换场景时对技能特效用缓存池提前做了缓存,进入场景后首次开释仍然卡顿,这是为什么呢? A1:首次特效开释的卡顿往往与Shader编译有关系,能够尝试收集Shader变种并提前Warmup一下。感激该用户匿名@UWA问答社区提供了答复 A2:比拟全面的预加载应该模仿实在环境下的播放流程,因而能够在切场景Loading期间,创立一个长期Camera,随后将须要预加载的资源全副在Camera后面播放一下,并调用Camera.Render: 对于特效Prefab,在对象池里实例化,并在Camera视线里实例化并播放一帧,同时调用Camera.Render强制渲染,再回收到对象池。对于Animator和Animation,Animator.Update(1.0)调用Animation.Sample模仿播放一遍,如果有动画事件,确保动画事件关联的特效和声音也在预加载列表里。对于AudioClip,调用PlayOneShot并静音。其余资源按需解决。按以上步骤解决后,下次在实在场景播放时,不会再有任何耗时的逻辑步骤,个别不会再呈现卡顿了。 感激漂泊猫咪2@UWA问答社区提供了答复 ShadowQ:对于UWA DAY 2022系列课程中《SLG手游的制作与优化》的疑难: Shadowmap改良里说能够在生成和承受时把WorldToLightMatrix的计算去掉,这个是怎么做到的?就算不转到光空间也得转到其余空间,怎么都得有矩阵运算得出shadowCoord,而且矩阵乘法是几个MAD,即便顶点很多,vs里跟其余形式比会有很大差别? A:首先,顶点的投影点是在程度面上的,顶点和投影点的绝对关系是比较稳定的,在WorldSpace是这样,在CameraSpace中也是如此。 其次,改良算法中的投影点的偏移计算是产生在CameraSpace中的,所以: 顶点自身MVP计算,是会计算到ViewSpace也就是CameraSpace下的viewPos;光线方向V,在CameraSpace下,是能够提前算一遍的,CPU一帧算一次就好;顶点到投影点的间隔是很容易通过类似三角形算进去的,而且这个比值是固定的,其实就是光线和地立体夹角A的,1/sinA;而A也是能够提前就晓得的,CPU一帧计算一次就好;晓得偏移长度和方向V,是很容易算出偏移的,那么也就很容易算出在ViewSpace下的投影点的地位;到这里,看起来很多步骤(次要是思考过程),其实就是一个MAD的事件;我只想晓得投影点的UV(即Shadowmap的ShadowCoord),所以Projection的过程其实就是一个MAD的事件;依据类似三角形的成像原理,Shadowmap中写入的是顶点在地立体上的Y值;到当初为止VS过程中,一共只用了两个MAD,而一个矩阵运算是四个MAD(不同写法指令不一样)。再次,生成和接管都须要通过这样的计算。 最初,从PPT中最初的性能比照来看,性能的晋升是有的,相差也不算很大,低端机上体现更为显著一点,有1.5ms左右的差距,高端机上差距并不算显著。 它带来对Shadowmap利用率的进步,而导致应用更低Shadowmap Size达到雷同的成果,对于高配机器来说,收益可能更大一点。 感激Jessica@UWA问答社区提供了答复 封面图来源于《SLG手游的制作与优化》课程 明天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题兴许都只是冰山一角,咱们早已在UWA问答网站上筹备了更多的技术话题等你一起来摸索和分享。欢送酷爱提高的你退出,兴许你的办法恰能解他人的当务之急;而他山之“石”,也能攻你之“玉”。 官网:www.uwa4d.com官网技术博客:blog.uwa4d.com官网问答社区:answer.uwa4d.comUWA学堂:edu.uwa4d.com官网技术QQ群:465082844

February 16, 2023 · 1 min · jiezi

关于字体:Google-Fonts-谷歌字体的使用

Google Font(收费)https://fonts.google.com/ 下面的链接打不开 可能须要代理 劣势:英文字体齐全,所有 Google Fonts 字体都是开源且收费劣势:中文字体匮乏 无论是看起来很正式的,还是花里胡哨的 他都有: 应用办法link标签引入<link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Ma+Shan+Zheng&family=Noto+Sans+SC:wght@500&family=ZCOOL+KuaiLe&display=swap" rel="stylesheet">@importvue之类的集成了webpack的我的项目能够这样引入: <style>@import url('https://fonts.googleapis.com/css2?family=Ma+Shan+Zheng&family=Noto+Sans+SC:wght@500&family=ZCOOL+KuaiLe&display=swap');</style>指定font-family: font-family: 'Ma Shan Zheng', cursive;font-family: 'Noto Sans SC', sans-serif;font-family: 'ZCOOL KuaiLe', cursive;这样你的页面上应用了这些字体的文字就会变得优雅起来。 此外,这个网站还提供了大量的icon,也是差不多的引入形式,大家能够本人去查看: 文章到此就完结了,心愿能够帮到你。

August 31, 2022 · 1 min · jiezi

关于字体:麒麟操作系统-kylinos-从入门到精通-办公环境-第十三篇-字体安装与windows字体的利用

0.根底环境类别:笔记本型号:中国长城 NF14C硬件平台:飞腾处理器(ArmV8 指令集)零碎:河汉麒麟操作系统 V10(SP1) 1.背景形容失常状况下,零碎下的wps或libreoffice用到的字体都已默认装置。但有时候一些ttf字体或者microsoft office下一些字体须要装置。咱们能够在装置好office、acrobat之后,将C:\windows\Fonts文件夹中的字体(我是win11下装置好了office2021与acrobat pro,约551MB空间)复制进去拷贝到咱们麒麟零碎,按要求装置即可。下图为麒麟零碎下wps自带字体,其实曾经够丰盛了。但依然搜寻不到微软雅黑。 2.linux下罕用的字体装置装置管理工具 sudo apt-get install fontmatrix -y 查问仓库中有的字体 sudo apt-cache search font ttf装置字体 sudo apt-get install fonts-wqy-zenhei -y #以这个为例 装置后,执行上面命令使字体失效 sudo fc-cache -f -v #使字体失效装置后,再从新关上wps等应该有成果,如果没有,就重启吧,重启解决所有问题。附:装置微软 TrueType Fonts: $ sudo apt update$ sudo apt install ttf-mscorefonts-installer3.从网站上下载的字体装置,如GB2312https://xiazai.zol.com.cn/det...,这个我这里只是通知大家办法,其余须要单个自行搜寻点ZOL本地下载,第一个平安下载是一个EXE的流氓,别惹了,不过麒麟零碎也没事,惹不上。解压到特定文件夹关上fontmatrix利用,导入文件另外一种形式就是通过命令行装置导入(具体操作见第4点,windows下的字体装置 4.将windows下装置的字体装置到麒麟零碎我的win11下的字体550MB,上传20Mb,集体NAS下载地址:http://gofile.me/4i7bC/yGD8jB3Fp 4.1应用fontmatrix装置(可选) 4.2应用命令行装置(可选)1.将windows中系统盘的fonts复制到/usr/share/fonts,并以Win11Fonts命名(PS:能够依据需要) sudo cp -R Win11Fonts/ /usr/share/fonts/cd /usr/share/fontsls2.批改权限 sudo chmod 755 -R Win11Fonts3.刷新字体缓存,使其失效 sudo fc-cache -f -v 4.字体装置后果查看在没有重启,查看没有失效。但重启后,成果见下。fontmartrix中检测也从459变成850个字体阐明,字体装置胜利了。 麒麟零碎专栏:https://segmentfault.com/blog...文章发表在SegmentFault分割邮箱:1179611323@qq.com群:662512340发行日志:20220614 首发

June 14, 2022 · 1 min · jiezi

关于字体:关于编程等宽字体-Cascadia-Code

之前有读者看了我文章里代码截图之后,给我留言,Jerry,你为什么不必等宽字体呢?的确,我对编程等宽字体没有什么钻研,感激这位读者对我文章仔细的浏览。网上做了一番功课,最初我抉择了 Cascadia Code 这款等宽字体。 看一下成果。图1和图2 别离是在 Visual Studio Code 里的非等宽字体和等宽字体 Cascadia Code,可见等宽字体的确能医治程序员的强迫症。 在 Visual Studio Code 里更换字体,留神如果字体名称中有空格符号,则整个字体名称须要用单引号包裹起来: sublime text 里启用等宽字体: cmd 里启用等宽字体: SAP GUI 里启用等宽字体: Chrome 浏览器里启用等宽字体: 我用的是 Fonts Changer 这款 Chrome 扩大: 在 slack 里,本人给本人发一条 direct message,点击这个闪电图标: 输出内容: /slackfont Cascadia Code而后 slack 的字体也能切换了: 更多Jerry的原创文章,尽在:"汪子熙":

December 13, 2021 · 1 min · jiezi

关于字体:与中文对齐的英文等宽字体

与中文对齐的英文等宽字体原始文档:https://www.yuque.com/lart/bl... 前言等宽字体是编程中常会用到的一些字体, 根本的模式就是所有符号的宽度都是一样的.但因为大多数等宽字体设计时并未思考对中文字符的兼容, 所以咱们在应用时会面对这样一个问题, 就是中文和英文字体对不齐.上面展现了我在网站https://www.programmingfonts.org/中寻找适合的字体时的一个例子(这里抉择的英文字体是十分常见的一个等宽字体 [Source Code Pro](https://www.programmingfonts.org/#source-code-pro) ): 能够看到, 下面的竖线是对不齐的.而咱们的目标是想找一款字体, 在保障字符 o0O8iIlLg9q 这些显著可辨别外, 还能够保障两个英文字符的宽度等于一个中文字符的宽度.当然, 对于本文而言, 更重要的是后者, 所以我在https://www.programmingfonts.org/测试了其提供的各款字体, 最终找到了如下几款至多能够保障对齐的字体.对应链接中的左栏提供了字体下载的链接.写完这篇文章后突然发现, 对于 z2 之间的比照短少了大写字母 Z . 然而前面的截图太麻烦了, 大家感兴趣的能够拿略微调整后的这两段话来自行测试: 啊|啊|啊啊啊|啊|啊|啊啊啊|啊|啊|啊啊啊|啊|啊|啊啊啊|啊|啊|啊啊啊|啊||||(q9gp?){GCu}<iIL1tT7>ck'b6'r[o0O]`nh`"uvw"|s5e|zZ2|8B3|,.\/|=;:|*|~-_+|字体展现https://www.programmingfonts.org/#agave https://www.programmingfonts.org/#binchotan-sharp https://www.programmingfonts.org/#bront-ubuntu https://www.programmingfonts.org/#cozette https://www.programmingfonts.org/#d2coding https://www.programmingfonts.org/#fairfax https://www.programmingfonts.org/#fairfax-hd https://www.programmingfonts.org/#fairfax-serif https://www.programmingfonts.org/#fixedsys-ligatures https://www.programmingfonts.org/#unifont https://www.programmingfonts.org/#inconsolata https://www.programmingfonts.org/#iosevka 这个字体的作者有一款专门增加了对中文反对的字体, 即更纱黑体, 喜爱的能够试试. https://www.programmingfonts.org/#mplus https://www.programmingfonts.org/#monofur https://www.programmingfonts.org/#nanum-gothic-coding https://www.programmingfonts.org/#terminus https://www.programmingfonts.org/#ubuntu Ubuntu 上最常见的 Ubuntu Mono 也是很不错的.

October 31, 2021 · 1 min · jiezi

关于字体:推荐使用Fontmin插件进行字体压缩

问题形容有时候为了我的项目的好看水平,咱们须要应用一些难看的字体,进行文字的优化。然而,一个字体文件个别都好几MB,文件太大,打包放到生产环境,很显然会节约流量带宽,导致网站申请工夫加长,这个必定是不行的。所以咱们须要去做字体压缩。 字体文件大的起因是因为汉字文字很多,据说,汉字总数有将近10字...字体压缩字体压缩的思维就是,把我的项目中须要应用到的文字独自拎进去,用不到的文字,就不要了,相当于按需引入。毕竟,咱们应用花式字体,所利用的字并不是有很多字。个别也就十几个,顶多几十个。 Fontmin应用步骤能够应用代码的模式去操作,npm i fontmin -g 也能够间接应用客户端进行压缩 这里举荐应用客户端模式进行压缩 第一步,下载客户端间接去官网下载即可,官网有客户端下载入口,官网附上: https://ecomfe.github.io/font... 第二步,装置好并应用装置略... 应用如下图: 第三步,生成好的压缩文件 咱们能够看到,生成了有各种格局的文件,我个别间接应用.ttf文件。 第四步,在我的项目中应用压缩后的字体由4兆多,压缩到20多KB,这样的话,勉强能够承受,能够在生产环境应用了... 间接应用客户端进行压缩的这种形式,集体感觉比写代码更加不便。当然写代码管制也行的,这里看集体爱好。整体来说,就压缩字体而言,这个插件还是不错的抉择的。❤举荐一下❤

October 29, 2021 · 1 min · jiezi

关于字体:Android-UX字体单独加载与设置的举例说明

界面的字体设置在开发中 如果须要设置非凡的字体 应该如何操作在这里给家人们举个例子呀 assert 预置字体 写一个字体设置的接口public final class Functions { public static void setFont(Context context, TextView textView, String font) { textView.setTypeface(Typeface.createFromAsset(context.getAssets(), font)); }}初始化时设置字体public class MainActivity extends AppCompatActivity { private TextView textViewDescription1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textViewDescription1 = findViewById(R.id.textViewDescription); Functions.setFont(this, textViewDescription1, Fonts.FONT_AVENIR_NextLTProRegular); } }成果预览 总结心愿对你有所帮忙

September 17, 2021 · 1 min · jiezi

关于字体:Font-Texture的内存值异常高

1)Font Texture的内存值异样高2)UWA报告Overdraw的统计以及数据解读疑难3)URP安卓平台下,高光有马赛克4)UGUI因为Different Material Instance导致合批被打断5)Unity地形TerrainData外面的SplatAlpha的压缩纳闷 这是第255篇UWA技术常识分享的推送。明天咱们持续为大家精选了若干和开发、优化相干的问题,倡议浏览工夫10分钟,认真读完必有播种。 UWA 问答社区:answer.uwa4d.comUWA QQ群2:793972859(原群已满员) FontQ:咱们的检测报告中看到一个占用很大的Font Texture,且是从刚进入游戏就始终存在。不过我想不通的是它仅有256*256,为什么会有61MB的占用? 版本:Unity 2019.4.3f1 A:在2018中没有见过这种问题,应该是Unity 2019的Bug,在Unity 2019.4.21中修复了。参考网址:https://unity3d.com/unity/whats-new/2019.4.21感激Xuan@UWA问答社区提供了回 RenderingQ:在UWA的测试报告中,咱们游戏的整体Overdraw比拟高,我想在内网复测一下Overdraw数据,有几个问题想求教一下: 1. 我应用UnityOverdrawMonitor在Editor中测试整个场景的Overdraw,测试后果要比UWA的小一些,我又测试了几个雷同的画面,都是UWA上的后果值更高一些,这个工具的统计值比UWA报告中的总填充数要小一点点,想问一下大家是怎么测试游戏中某个时刻的Overdraw? 2. UWA报告中这几个数据的关系是怎么的?总填充数、均匀填充倍数和单像素最大填充数等。 3. 对于其它工具,我把ParticleEffectProfiler拿到内网,它能够统计单个特效的单像素最大填充数,测试了几个独自的特效,Overdraw高的达到了4、5、6,大多数特效都是2,曾经整顿出Overdraw过高的特效给美术去优化了。 PS:因为公司我的项目是在内网开发,所以我的项目在Editor中的数据没法截图,我贴几张UWA上的报告截图: A:1. 如果UnityOverdrawMonitor是以下这个开源工具:https://github.com/Nordeus/Unite2017/ 那么,这外面的统计是不精确的,因为它的底层原理是通过Shader Replacement把Shader换成半透明的Shader来进行渲染,从而计算其Overdraw,这个并没有思考深度遮挡、剔除等问题,所以计算出来的值是有问题的,有时候甚至会引起不必要的误导。 这些数值的具体阐明可见:《UWA新性能| GPU性能优化,One Step!》总填充数峰值我的项目运行过程中,单帧填充像素的数量峰值。 总填充数均值我的项目运行过程中,均匀每帧的填充像素数量。 填充倍数峰值我的项目运行过程中,单帧中整个屏幕被填充的倍数峰值;倍数越高,则GPU的压力越大。 填充倍数均值我的项目运行过程中,均匀每帧的填充的倍数均值;倍数越高,则GPU的压力越大。 从截图中看,你们的特效Overdraw压力还是不小的,倡议题主特地注意。 该答复由UWA提供 RenderingQ:最简略的场景,蕴含一个Unity默认球体,应用URP Lit Shader。 在编辑器中显示失常:工程输入到安卓之后,高光局部马赛克十分重大:材质只设置了色彩:请问有人遇到过这个问题吗? Unity版本:2021.1.9f1URP版本:11.0.0 A:须要批改URP源码。 在Packages/com.unity.render-pipelines.core@11.0.0/ShaderLibrary/Common.hlsl文件中1225行: // Normalize that account for vectors with zero lengthreal3 SafeNormalize(float3 inVec){ real dp3 = max(FLT_MIN, dot(inVec, inVec)); return inVec * rsqrt(dp3);}其中real须要批改为float: // Normalize that account for vectors with zero lengthfloat3 SafeNormalize(float3 inVec){ float dp3 = max(FLT_MIN, dot(inVec, inVec)); return inVec * rsqrt(dp3);}所以最终还是挪动平台精度设置有问题。 ...

June 23, 2021 · 1 min · jiezi

关于字体:免费字体下载

字体分享录:https://ziti.fenxianglu.cn/

February 8, 2021 · 1 min · jiezi