限制Unity帧率的方式

1)限制Unity帧率的方式
2)只在编辑器内,纹理不开启Read&Write情况下,如何获取纹理所有颜色值
3)如何在FBX剔除Lit.shader依
4)如何在iPhone 12mini设备上禁止竖屏


这是第373篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

Platform

Q:目前我们想把游戏设置为30帧,是通过Application.targetFrameRate实现的;但是会有一些兼容性问题,比如一些设备会动态调整设备刷新率导致游戏帧率过低(比如设备从120HZ动态降为60HZ时,游戏就从30帧掉为15帧了),我们也尝试过跟进设备的刷新率变化动态调整Application.targetFrameRate,但是一些设备还是出问题,主要是一些支持高刷新的设备,如120HZ、180HZ,设备在标准模式下本身会动态调整刷新率的,节约能耗。

不知道大家有没有相关的经验或者更好的解决方案?

A:可以尝试挂一个Update脚本,估计可以跟上高刷新的设备120HZ、180HZ的动态调整刷新率。

感谢NG週@UWA问答社区提供了回答


Editor

Q:只想在编辑器内优化一些纹理图片,纹理不开启Read&Write。

目前方案如下,但是会有几个问题:
1. LoadImage只支持PNG、JPG格式,像TGA、PSD格式则返回为空。
2. 对于那些几十MB的PNG纹理,也是返回空。

请问有无其他方式?

代码如下:

var texture = AssetDatabase.LoadAssetAtPath<Texture2D>(assetPath);
var bytes = File.ReadAllBytes(assetPath);
var new_texture = new Texture2D(texture.width, texture.height);
var res = new_texture.LoadImage(bytes);
if (res == false)
{Debug.LogError($"错误提示:{assetPath}纹理资源LoadImage失败", texture);return null;
}
var colors = new_texture.GetPixels32();  // 获取到所需颜色数组

A1:可以试试以下方法:

Texture2D texture = AssetDatabase.LoadAssetAtPath<Texture2D>(assetPath); // 你的纹理
byte[] rawTextureData = texture.GetRawTextureData();Texture2D finalTex = new Texture2D(texture.width, texture.height, texture.format, false);
finalTex.LoadRawTextureData(rawTextureData);
finalTex.Apply();var colors = finalTex.GetPixels32();  // 获取到所需颜色数组

请注意,所有这些方法都是在绕过Read/Write Enable的限制时的替代品,而不是直接的解决方案。如果可能,最好还是在导入纹理时启用Read/Write Enable以获得更好的性能和更简单的纹理操作。

另外一个方法:可以设置一个Camera的TargetTexture为一个RenderTexture,接着使用Graphics.Blit将目标纹理渲染到这个RenderTexture上。然后,你可以通过ReadPixels函数将RenderTexture读取为Texture2D。这种方法不依赖于Read/Write Enable。

扩展阅读:《高效访问纹理数据,持续优化整体性能》

感谢NG週@UWA问答社区提供了回答

A2:我之前用过@NG週说的办法,是可行的,不过我当时只处理PNG图片。

另外离线处理纹理,可以考虑使用Job来并行化处理,效果很高。

感谢junbin.liu@UWA问答社区提供了回答


Asset

Q:测试发现只能通过后处理才能去掉Lit.shader依赖,尝试使用AssetDatabase.LoadAssetAtPath(fbxPath)然后执行下面代码,并不能去掉依赖。请问还有什么其他办法吗?

protected void OnPostprocessModel(GameObject model){var renderers = model.GetComponentsInChildren<Renderer>();foreach (var renderer in renderers){// 默认fbx会引用Lit.mat,会引起ab包冗余,导入时去掉foreach (var material in renderer.sharedMaterials){if (material != null && material.name == "Lit"){renderer.sharedMaterials = new Material[0];}}}// 去掉fbx默认自带的材质球ModelImporter importer = (ModelImporter)base.assetImporter;if (importer != null){if (importer.materialImportMode != ModelImporterMaterialImportMode.None){importer.materialImportMode = ModelImporterMaterialImportMode.None;importer.SaveAndReimport();}}}

A:可以试试在打包阶段,打AssetBundle之前,去掉Lit.mat对lit.Shader的依赖。

Cube.prefab,就是Unity默认的Cube做成的Prefab。

var prefabGO = AssetDatabase.LoadAssetAtPath<GameObject>(“Assets/Editor/Cube.prefab”);
var renderer = prefabGO.GetComponent<Renderer>();
renderer.sharedMaterial.shader = null;

感谢范世青@UWA问答社区提供了回答


iOS

Q:使用的Unity引擎是2020.347f1,已经在打包时候设置了横屏,然后又使用了以下代码设置,其它机型没问题但对面的机器还是能竖屏。

        Screen.orientation = ScreenOrientation.AutoRotation;Screen.autorotateToLandscapeLeft = true;Screen.autorotateToLandscapeRight = true;Screen.autorotateToPortrait = false;Screen.autorotateToPortraitUpsideDown = false;

想要禁止竖屏,设置横屏在安卓和大部分苹果上没问题,但在iPhone 12mini上却可以竖屏,请问还有其它方法吗?

A1:先确定iPhone 12mini的出包工程跟其他苹果设备的是否是同一个,接着排除有没有不小心在Xcode工程里面设置了竖屏模式,还有就是给iPhone 12mini装一个同类型的游戏,看看能不能横屏,排除是不是手机装了强制竖屏插件问题。

感谢NG週@UWA问答社区提供了回答

A2:遇到过一次,是手机系统的Bug,打开任何游戏都能切换横竖屏,重启下手机然后好了。

感谢jj@UWA问答社区提供了回答

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/671844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LInux页高速缓存和页写回

页缓存 页缓存是由内存中的物理页面组成的&#xff0c;其内容对应磁盘上的物理块。 页缓存大小能动态调整&#xff0c;可以占用空闲内存以扩大大小&#xff0c;也可以自我收缩缓解内存使用压力。 如果读一个磁盘内容&#xff0c;我们会读内存&#xff0c;如果存在&#xff0c;…

游戏开发-会飞的小鸟(已完结,附源码)

游戏开发-会飞的小鸟&#xff08;已完结&#xff0c;附源码&#xff09; 你将学到的课程链接详细介绍 你将学到的 掌握Java编程的基本技能开发出自己的“会飞的小鸟”游戏对面向对象编程有深刻的理解学会运用常见算法和数据结构解决问题能够独立调试和优化自己的代码 课程链接…

python二维数组初始化的一个极其隐蔽的bug(浅拷贝)

初始化一个三行三列的矩阵 m n 3初始化方式1 a [[0 for i in range(m)] for j in range(n)]初始化方式2 b [] row [0 for i in range(0,m)] for i in range(0,n):b.append(row)分别输出两个初始化的结果 for row in a:print(row) for row in b:print(row)当前的输出为…

用C语言实现单个网页图片爬虫

这段代码是一个使用C语言和libcurl库编写的程序,用于从指定的URL下载图片并保存到本地文件中。下面是该代码的详细介绍: 包含头文件: c #include <stdio.h> #include <curl/curl.h> 这两个头文件分别是标准I/O库和libcurl库的头文件。 定义回调函数: c …

标准库 STM32+EC11编码器+I2C ssd1306多级菜单例程

标准库 STM32EC11编码器I2C ssd1306多级菜单例程 &#x1f4cc;原创项目来源于&#xff1a;https://github.com/AdamLoong/Embedded_Menu_Simple&#x1f4cd;相关功能演示观看&#xff1a;https://space.bilibili.com/74495335 单片机多级菜单v1.2 &#x1f449;本次采用的是原…

springboot162基于SpringBoot的体育馆管理系统的设计与实现

体育馆管理系统 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕…

算法练习-二叉树的节点个数【完全/普通二叉树】(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;二叉树 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0c;旨…

广义表-C语言

广义表&#xff08;Generalized List&#xff09;是一种扩展了线性表的数据结构&#xff0c;它在线性表的基础上增加了元素可以是表的特点。在广义表中&#xff0c;元素不仅可以是单个的数据元素&#xff0c;还可以是一个子表&#xff0c;而子表中的元素也可以是数据元素或其他…

Java on VS Code 2024年1月更新|JDK 21支持!测试覆盖率功能最新体验!

作者&#xff1a;Nick Zhu - Senior Program Manager, Developer Division At Microsoft 排版&#xff1a;Alan Wang 大家好&#xff0c;欢迎来到 Visual Studio Code for Java 2024年的第一期更新&#xff01;提前祝愿大家春节快乐&#xff01;在本博客中&#xff0c;我们将有…

jvm一级缓存

1、利用JVM缓存。脱离redis。 2、导包&#xff0c;springboot自带此包。如没有可以导&#xff1a;com.google.guava:guava:20.0的包。 3、直接上代码&#xff1a; package com.leo.cache;import com.alibaba.fastjson.JSONObject; import com.google.common.cache.Cache; im…

开源软件:引领技术创新、商业模式与安全的融合

序 在信息技术日新月异的今天&#xff0c;开源软件以其独特的魅力和影响力&#xff0c;正逐渐成为软件产业的新常态。开源软件的低成本、高度可协作性和透明度等特点&#xff0c;不仅吸引了无数企业和个人用户的青睐&#xff0c;更为软件行业带来了前所未有的繁荣景象。 一、…

复旦微 zynq amp cpu0 唤醒启动cpu1

1 配置多核amp工程&#xff0c;参考上一篇文章 https://blog.csdn.net/yangchenglin927/article/details/136057534 2 在cpu0的main函数中增加唤醒代码 active_cpu1(); /** helloworld.c: simple test application** This application configures UART 16550 to baud rate 96…

Flink SQL Client 安装各类 Connector、Format 组件的方法汇总(持续更新中....)

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

DAY43:背包问题提升1049、494、474

Leetcode: 1049 最后一块石头的重量 II 这道题和昨天的最后一道题很像&#xff0c;都是重量和价值一样等于stone[i]。 本质思想是尽量将石头分成相似的两堆。如果出现两堆价值一样&#xff0c;那0&#xff0c;如果不一样&#xff0c;就用大的那堆减去小的那堆就是最后相撞之后…

数据结构——D/二叉树

&#x1f308;个人主页&#xff1a;慢了半拍 &#x1f525; 创作专栏&#xff1a;《史上最强算法分析》 | 《无味生》 |《史上最强C语言讲解》 | 《史上最强C练习解析》 &#x1f3c6;我的格言&#xff1a;一切只是时间问题。 ​ 1.树概念及结构 1.1树的概念 树是一种非线性的…

【Android辟邪】之:gradle——在项目间共享依赖关系版本

翻译和简单修改自&#xff1a;https://docs.gradle.org/current/userguide/platforms.html#sec:sharing-catalogs 建议看原文&#xff08;有能力的话&#xff09; 现在 Gradle 脚本可以使用两种语法编写&#xff1a;Kotlin 和 Groovy 本文只使用kotlin脚本语法&#xff0c;更…

10.0 Zookeeper 权限控制 ACL

zookeeper 的 ACL&#xff08;Access Control List&#xff0c;访问控制表&#xff09;权限在生产环境是特别重要的&#xff0c;所以本章节特别介绍一下。 ACL 权限可以针对节点设置相关读写等权限&#xff0c;保障数据安全性。 permissions 可以指定不同的权限范围及角色。 …

人工智能:数据分析之数据预处理、分析模型与可视化

在人工智能和数据科学领域&#xff0c;数据分析是一种核心过程&#xff0c;它帮助我们从大量的数据中提取有价值的信息。数据分析的质量和结果直接影响到决策的效率和准确性。在这篇博客中&#xff0c;我们将详细探讨数据分析的关键步骤&#xff0c;包括数据预处理、分析模型和…

Oracle 面试题 | 15.精选Oracle高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

AR人脸106240点位检测解决方案

美摄科技针对企业需求推出了AR人脸106/240点位检测解决方案&#xff0c;为企业提供高效、精准的人脸识别服务&#xff0c;采用先进的人脸识别算法和机器学习技术&#xff0c;通过高精度、高速度的检测设备&#xff0c;对人脸进行快速、准确地定位和识别。该方案适用于各种应用场…