Excel表格怎么快速复制100个相同表格(wps表格怎么快速复制100个相同表格)
1149
2022-05-29
Unity
小科普
老规矩,先介绍一下
Unity
的科普小知识:
Unity
是 实时3D互动内容创作和运营平台 。
Unity
平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括
手机
、
平板电脑
、
PC
、
游戏主机
、
增强现实
和
虚拟现实设备。
也可以简单把
Unity
理解为一个
游戏引擎
,可以用来专业制作
游戏
!
Unity
踩坑小知识点学习
Unity调用API ,动态获取Android权限
在开发安卓应用时,经常会用到获取Android权限的问题。
这个问题有两种解决方案
一种是在Android端就已经写好了动态获取权限的方法,Unity调用该方法就可以了。
另一种是直接在Unity中调用API,申请权限获取(在2019之后Unity已经提供了面向Android的 权限申请方法)
那对于做Unity开发的来讲,自然是直接在Unity端调用API申请权限比较方便了,下面简单说一下怎样调用。
想了解第一种方法的可以看这篇文章:Unity与Android Studio交互之 ✨ 获取手机权限(存储、录音、相机等)
Unity官方API链接:https://docs.unity3d.com/ScriptReference/Android.Permission.html
点开源码可以看到Unity也存的是权限名称,这说明我们也可以自定义一些权限用来弹窗,不一定必须使用它写好的。
Unity提供的这个API可以在脚本中直接调用,API使用示例如下:
private void Start() { Permission.RequestUserPermission(Permission.Camera); Permission.RequestUserPermission(Permission.Microphone); Permission.RequestUserPermission(Permission.FineLocation); Permission.RequestUserPermission(Permission.CoarseLocation); Permission.RequestUserPermission(Permission.ExternalStorageRead); Permission.RequestUserPermission(Permission.ExternalStorageWrite); }
下面是一个 使用Unity动态申请权限 的完整的示例代码:
第一种方案:
using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.Android; public class PerTest : MonoBehaviour { string[] strs = new string[] { "android.permission.INTERNET", "android.permission.READ_PHONE_STATE", "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.ACCESS_WIFI_STATE", "android.permission.ACCESS_NETWORK_STATE", "android.permission.GET_TASKS", "android.permission.REQUEST_INSTALL_PACKAGES", "android.permission.WAKE_LOCK", "android.permission.SYSTEM_ALERT_WINDOW", "android.permission.CHANGE_WIFI_STATE", "android.permission.CHANGE_NETWORK_STATE", "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.SYSTEM_OVERLAY_WINDOW", "android.permission.ACCESS_COARSE_UPDATES", "android.permission.WRITE_SETTINGS", "android.permission.BATTERY_STATS", "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" }; void Start() { for (int i = 0; i <= strs.Length - 1; i++) { Permission.RequestUserPermission(strs[i]); Debug.Log("添加权限: " + strs[i]); } } }
第二种方案:
using System.Linq; using UnityEngine; using UnityEngine.Android; public class PerTest : MonoBehaviour { //想要获取权限的字符串数组 string[] strs = new string[] { "android.permission.INTERNET", "android.permission.READ_PHONE_STATE", "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.ACCESS_WIFI_STATE", "android.permission.ACCESS_NETWORK_STATE", "android.permission.GET_TASKS", "android.permission.REQUEST_INSTALL_PACKAGES", "android.permission.WAKE_LOCK", "android.permission.SYSTEM_ALERT_WINDOW", "android.permission.CHANGE_WIFI_STATE", "android.permission.CHANGE_NETWORK_STATE", "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.SYSTEM_OVERLAY_WINDOW", "android.permission.ACCESS_COARSE_UPDATES", "android.permission.WRITE_SETTINGS", "android.permission.BATTERY_STATS", "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" }; void Start() { //开始动态申请权限 strs.ToList().ForEach(s => { Debug.Log("RequestUserPermission: "+s); if (!Permission.HasUserAuthorizedPermission(s)) { Permission.RequestUserPermission(s); Debug.Log("add RequestUserPermission: " + s); } else { Debug.Log("it has RequestUserPermission: " + s); } }); } }
第三种方案:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Android; public class PerTest : MonoBehaviour { public static PerTest instance; private void Awake() { instance = this; } //初始化,权限申请要尽可能早 [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] public static void Init() { //先把权限添加进列表,然后申请 AndroidPermissionMgr.permissionList.Add("android.permission.READ_PHONE_STATE"); AndroidPermissionMgr.permissionList.Add(Permission.ExternalStorageRead); AndroidPermissionMgr.permissionList.Add(Permission.ExternalStorageWrite); AndroidPermissionMgr.permissionList.Add(Permission.FineLocation); AndroidPermissionMgr.permissionList.Add(Permission.CoarseLocation); AndroidPermissionMgr.StartCheckPermission(0.02f); //开始申请 Debug.Log("权限申请完毕"); } } public static class AndroidPermissionMgr { static int index; public static List
三种方案的弹窗都是一样的效果,可根据不同的权限需求添加不同的权限。
下面是参考来的所有Android权限表,大家可以参考一下。
Android危险权限
Android所有权限
Android API unity
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。