
Unity小实用
文章平均质量分 55
主要写一些关于Unity工具的使用
XR风云
云计算、边缘计算、VR/AR,是一个奋斗者,坚持没有退路,就是必胜之路。
展开
-
Unity 引入maven https链接的报错问题
我们在这里已经知道怎样Unity中配置第三方库的方法。最近公司了为了安全的问题,把maven的地址由http改为https了,改成https之后就出现问题了。原创 2022-09-20 09:56:44 · 1227 阅读 · 0 评论 -
Unity代码通过Package Manager导入包的方法
今天在做一个项目,项目中依赖于很多其他的Package,其他的Package又是通过tgz包提供的,没有放到中心仓库,要是通过PackageManager界面导入需要一个一个点击加载,费时又费力,那我就写了一个脚本,点击importpackage,就会扫描Packagetgz目录,把所有的Package加载进来,这个方法无法做到依赖包关系,需要你自己多加载几次。...原创 2022-07-20 19:05:12 · 2527 阅读 · 0 评论 -
Unity的相机的世界坐标Postion、Rotation、Scale怎样转换成View矩阵
最近在做端云协同渲染,会上报相机的世界坐标Postion、Rotation、Scale,没有保存View矩阵,那怎样根据Postion、Rotation、Scale获取得到View矩阵呢?我们知道Camera.worldToCameraMatrix可以直接获取得到view矩阵,这个矩阵是跟OpenGL保持一致的。我们知道Matrix TRS可以根据Postion Rotation Scale获取得到转换矩阵,所以根据Postion Rotation Scale获取得到View矩阵的公式为:更简单的计算原创 2022-07-13 14:52:28 · 1392 阅读 · 0 评论 -
Android上使用NDK MediaCodec硬解码到纹理上
在之前写过在Android平台上通过MediaCodec的能力,硬解码到纹理上,然后在Unity上使用纹理进行渲染。在Unity使用Android的MediaCodec硬解码能力进行纹理加载_XR风云的博客-优快云博客在做AR云渲染项目中,需要在Unity中利用Android的MediaCodec能力进行对视频进行硬解码,我们知道MediaCodec可以把视频流渲染到一个surface上,怎样把视频流中的纹理在Unity中使用呢?一个办法就是MediaCodec解码完成之后,可以把图像的缓存读取出来,在U原创 2022-06-17 14:48:45 · 2523 阅读 · 0 评论 -
Unity上玩转数字人(Avatar)
现在数字人越来越有趣了,现在好多公司都在做,那我也想在Unity玩转一下,怎么玩呢?首先我们需要有数字人资源,数字人资源从哪来呢?第一你可以直接去Unity assetstore上去搜一下免费的数字人,有2个还是比较好的资源。第二可以是自己制作, 打开网址https://vrchat.readyplayer.me/avatar上传一个图片就可以自己捏脸,制作一个自己的avatar了。下面就是我根据关晓彤捏出来的,是不是捏出来的非常不像,这个网站是偏欧美化的,很多材质都很欧美风,所以希望有国内的做出来一个可以原创 2022-06-01 08:45:29 · 13768 阅读 · 5 评论 -
Unity中实时更新图片的方法探究
背景最近继续在做VR会议,在共享桌面这一块遇到了一个棘手的问题。在会议中,共享的桌面是通过发送一帧一帧的图片来实现的。在Unity中需要把图片渲染出来。3个难点在Unity实时的渲染图片有3个难点:在往texture中灌数据的时候是一个非常耗时的工作,如果是在主线程中做的话,是会影响帧率的。 服务端传过来的图片格式数据为RABG格式,是一个不规范的格式,没有办法直接赋值到texture中,需要做一次转换,转成RGBA格式或者ARGB格式。 texture.Apply函数,是把CPU中的数原创 2022-03-30 15:05:10 · 4712 阅读 · 0 评论 -
Unity中世界坐标与相对于某个物体的相对坐标的转换
最近在开发XR会议, 会上报一些姿态信息在多个端侧进行同步,由于在不同的端侧定位的位置是不一样的,如果你上传的是世界坐标,其实你在另个端侧根本就不能定位出来。所以我们在上报姿态信息时,都是相对于某个物体的相对坐标,然后在端侧在进行转换成相对坐标。设定roomObject为你要改变的相对物体,世界坐标转换成相对于roomObject这个物体的相对坐标: Vector3 headLocalPosition = roomObject.transform.InverseTransformPoint原创 2022-03-08 19:19:31 · 7710 阅读 · 1 评论 -
Unity中使用XR Input获取XR设备中手柄的姿态信息
在上一篇博客Unity在XR设备中获取手柄的按键信息_XR风云-优快云博客我们知道怎样获取手柄的按键信息,那怎样获取得到手柄的姿态信息呢?也是很简单的了,Unity的XR Input已经帮我们对接上Oculus平台,能够获取手柄姿态信息。1、根据输入设备的类型获取设备,设备类型包括如下,我们今天是获取手柄信息,主要用到Left或者Right。 // // 摘要: // A set of bit flags describing XR.InputDevice ch原创 2022-03-04 09:17:44 · 6984 阅读 · 0 评论 -
Unity在XR设备中获取手柄的按键信息
我们在平常的XR设备开发中,尤其适用VR设备的时候,会用到手柄的操作。我们知道Oculus SDK提供了OVRInput,能够获取得到手柄的按键信息。// public variable that can be set to LTouch or RTouch in the Unity Inspectorpublic Controller controller;// returns a float of the Hand Trigger’s current state on the Oc.原创 2022-03-02 19:36:02 · 13982 阅读 · 5 评论 -
Unity如何导入已被烘焙的模型
最近在使用Unity做VR虚拟会议,美术给我们的会议房间资源是经过烘焙好的贴图,所以是不需要打光,亮度就非常亮的。当我们把fbx导入到Unity中,Unity显示的资源都非常的偏暗,基本没有光照信息,打开烘焙好的贴图,但是看贴图又是很亮,如何破解这个问题呢?1、首先我们资源文件拖到Unity中,点击资源文件的fbx,在Inspector中旋转Matrials,点击Extract Matrials,我们先抽离出来材质。2、导出材质到Materials目录下,选中你需要修改烘焙贴图的材质,勾选上Em原创 2022-01-28 15:20:52 · 3126 阅读 · 0 评论 -
Unity如何批量修改材质的属性
Unity导入fbx资源文件的时候,需要修改材质的某个属性,其实修改某个属性为同一个值还是比较简单的,只需要全选所有的材质,然后在Inspector里面进行修改就行了,就会批量修改所有的材质属性。如果修改很多的材质,每个属性都不一样呢?我这边写了一个脚本来进行操作。具体的步骤为:1、根据材质目录获取所有的材质路径2、根据材质路径加载所有的材质,并对每个材质修改属性。3、保存修改的材质。下面展示了我在修改烘焙材质的例子,大家可参考。主要我们Emission下面的Color贴图跟Albe原创 2022-01-28 15:17:01 · 5493 阅读 · 0 评论 -
Unity调用jar包或者aar包
最近一直在做VR云会议,使用到了华为云会议的服务,华为云会议服务没有提供Unity版本的SDK,提供了Android版本的native sdk,那就自己只能在Unity中自己封装一层来调用Android接口。在这过程中,碰到了一些问题,做一下总结。1、获取当前的Application或者当前的Activity using AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityP原创 2022-01-24 16:28:01 · 7394 阅读 · 1 评论 -
解决UnityGLTF不支持Android手机端不能读取StreamingAssets目录下文件的问题
解决UnityGLTF不支持Android手机端不能读取StreamingAssets目录下文件的问题原创 2021-12-25 16:45:14 · 7432 阅读 · 4 评论 -
Unity引入自定义aar库,aar库又依赖其他第三方库,如何破?
最近开发一个VR上项目,这个项目想集成一个云上的SDK,但是这个SDK只发布了JAVA版本aar库,没有Unity版本。那只能自己想办法把aar库集成到Unity项目中。在这个集成过程中,发现这个aar库还依赖于第三方库,所以在Unity版本的apk运行的的时候,就会报错Unity AndroidJavaException: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/gson/GsonBuilder等。202原创 2021-10-20 10:32:27 · 4304 阅读 · 0 评论 -
Unity2019版本打包一直停留在 detecting current sdk tools version的解决方案
1、我公司一般都是通过代理访问外网的,至于unity 如何设置代理,可以参考我这篇博客。2、所以按照Unity的android版本打包就非常的麻烦。所以Unity依赖的android SDK JDK我这就不赘述了,很多博客都有在写这块怎么安装。3、在所有的安装完成之后。我们需要安装Gradle-5.6.4以及Gradle的plugin 3.6.0,这一步很关键,Unity在打包的时候回用到Gradle-5.6.4,而Gradle以及它的插件缓存就很重要了。打开android stu.原创 2021-08-12 19:17:23 · 6323 阅读 · 1 评论 -
Unity小实用八-使用input system进行单指/双指的手势操作
1、在package manager中先安装Input system 包。2、安装完成之后,创建input action。创建单手指操作,创建一个获取单手指位置的action,一个获取单手指交互的action。3、创建双手指的操作,创建一个获取第一个手指位置的action,一个获取第二个手指位置的action,一个获取第二个手指交互的action。4、创建InputManager.cs脚本,用来管理所有的操作信息。using System;using System.Collections原创 2021-07-27 17:30:28 · 5997 阅读 · 0 评论 -
Unity小实用七-简单的MessageBox
在工作的开发中,比如请求失败了,需要弹窗告知用户。自己就搞了个简单的MessageBox。能够满足我日常的弹窗要求。使用方法就很简单,就一行代码就能够弹窗。 /// <summary> /// 弹窗接口 /// </summary> /// <param name="title">弹窗的标题</param> /// <param name="body">弹窗的具体信息</param>...原创 2021-07-16 15:53:51 · 2096 阅读 · 1 评论 -
Unity场景导出GLTF格式的文件方法
最近需要在Unity中解析GLTF文件,以及能够导出Unity的场景信息。经过查询,最后决定使用UnitGLTF这个开源库。1、首选下载代码,git clone https://github.com/KhronosGroup/UnityGLTF.git2、打开UnityGLTF项目3、打开项目之后,选择Samples下面的一个场景,在Console有超多的错误信息。Assets\UnityGLTF\Runtime\Scripts\Extensions\SchemaExtensio原创 2021-07-15 08:57:01 · 5533 阅读 · 8 评论 -
Unity小实用六-Unity编辑中的字符串下拉框(String Dropdown)
在Unity中,enum类型会默认转换为下拉框进行选择。但是在平常的使用中,有时候还是非常不方便,我想要字符串作为选择呢?找Unity官方的方法,没有找到,那就自己进行进行定制了。第一步:需要我们定义一个自己的StringInList属性。然后增加到Inspector中可以进行编辑。文件名为: StringInListDrawer.cs代码如下:using System;using UnityEngine;#if UNITY_EDITORusing UnityEditor;#en原创 2021-06-08 15:58:06 · 2450 阅读 · 4 评论 -
Unity小实用五-对象的渲染顺序设置
最近在调AR云渲染服务的时候,我们都知道需要从AREngine或者ARCore获取得到摄像机的图片,作为我们渲染的背景图。背景图一般都是最后渲染,或者深度最深的背景。所以我们在写渲染背景图的Shader时,就会在Shader中设置Tag为: Tags { "Queue" = "Background" "RenderType" = "Background" "ForceNoShadowCast...原创 2021-05-24 11:21:07 · 333 阅读 · 0 评论 -
Unity小实用四-强大的Runtime Inspector & Hierarchy,助你提高手机端调试效率
Runtime Inspector & Hierarchy是一个简单而强大的Unity 3D运行时检查器和层次结构解决方案,能够在Unity支持的几乎任何平台上工作,包括移动平台。这有4种安装安装:1、导入RuntimeInspector.unitypackage到你当前的开发工程中2、git clone或者下载源代码,然后把Plugins这个文件放到你工程的Assets目录下。Git地址为:https://github.com/yasirkula/UnityRuntimeInspe..原创 2021-05-20 16:06:09 · 3450 阅读 · 0 评论 -
Unity小实用三-Computer Shader使用RenderTexture类型进行数据的接收
我们知道compute shader的代码如下,我们Result使用RenderTexture类型接收数据// Each #kernel tells which function to compile; you can have many kernels#pragma kernel CSMain// Create a RenderTexture with enableRandomWrite flag and set it// with cs.SetTextureRWTexture2原创 2021-05-18 15:27:33 · 1166 阅读 · 0 评论 -
Unity小实用二-配置visual studio查看依赖库代码的方法
我们在平常看Unity代码,都是使用visual studio作为外部编辑器,但是有时候看依赖库的的函数,经常定位不进去,报无法导航到插入点下面的符号,如下图所示的错误。这是因为我们vs的工程代码没有把依赖库的代码导入进来,所以定位不到函数所在的位置。解决办法:Edit-> Preferences->External Tools,把Registry packages勾选上,然后点击Regenerate project files。就会把我们从pakage manager安装的代.原创 2021-05-13 17:07:08 · 1012 阅读 · 4 评论 -
Unity小实用一:选择绑定在其他组件上挂载的脚本
今天看开源Unity的代码,看到一个组件上的参数选择挂载了其他组件上的一个脚本,自己就尝试去绑定一下,好像绑定不到哦。那别人是怎样搞得呢?自己实践出来一个方法,如果Unity大神有更好的方法,请告知我,多谢。1、首先选中操作的组件,然后点击Inspector上右上角的小锁,进行锁定。2、点击Inspector上右上角的小三点,选择Add Tab->Inspector, 会弹出一个新的Inspector,我们把它拖出来,跟上一个Inspector并排。3、然后我在选择我们脚本原创 2021-05-12 10:36:41 · 1847 阅读 · 1 评论 -
Unity制作适配全屏的Quad图形
在Unity项目中,有时候需要呈现一直跟随摄像头移动的,能够全屏的一个quad长方形,quad加载纹理,就可以一直显示全屏了。把这个脚本绑定到Camera上,具体代码如下:using System.Collections;using System.Collections.Generic;using UnityEngine;public class camera : MonoBehaviour{ private GameObject _textureQuad; privat原创 2021-05-10 19:17:21 · 2881 阅读 · 2 评论 -
在Unity使用Android的MediaCodec硬解码能力进行纹理加载
在做AR云渲染项目中,需要在Unity中利用Android的MediaCodec能力进行对视频进行硬解码,我们知道MediaCodec可以把视频流渲染到一个surface上,怎样把视频流中的纹理在Unity中使用呢?一个办法就是MediaCodec解码完成之后,可以把图像的缓存读取出来,在Unity中利用Texture2D 的LoadRawTextureData能力加载到一个纹理上去, 然后在经过YUV格式转换成RGB格式。这个方法非常耗性能,需要从GPU->CPU->GPU的链条,是非常耗原创 2021-05-07 17:01:27 · 3206 阅读 · 12 评论 -
Unity Android Logcat打印不了jar库中的日志的解决办法
最近在使用Unity连接Android手机联调开发APP,但是在联调的过程中Android Logcat中没有Jar库中的日志,这样很不方面定位问题。经过查询资料找到了办法,是因为Android Logcat过滤了Tag,需要我自己手动增加你Jar包打印日志的Tag才能打印出来日志。方法:打开Android Logcat,右键点击Tag->Tag Control,如下图所示。这样就打开了增加Tag的界面,增加你要打印的tag,并且勾选上就可以在Android Logcat中打印你想要的原创 2021-04-28 08:41:56 · 547 阅读 · 0 评论