![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity探究
文章平均质量分 72
81192_csdn
喜欢创造新世界
展开
-
抓取屏幕与毛玻璃效果
文章目录1.前言2.抓取屏幕2.1 Unity C#接口2.2 CommandBuffer2.3 GrabPass3.获取屏幕坐标3.1 ComputeScreenPos方法3.2 VPOS语义3.3 SV_POSITION 语义3.4 ComputeGrabScreenPos4.背景模糊5.最后1.前言在unity实现毛玻璃(磨砂玻璃)效果,则需要三要素:抓取屏幕、根据渲染体在屏幕上的坐标获取屏幕像素、模糊处理。本文基于Unity官方的实现进行说明,并对一些节点进行适当的展开说明。2.抓取屏幕抓取原创 2022-05-26 16:27:07 · 1167 阅读 · 1 评论 -
Unity工程导入Android工程
文章目录1.前言2.集成到原生Android步骤2.1 导出Android Module2.2 导入原生Android工程3.Unity画面集成与显示3.1 以Activity形式集成3.2 桌面局部显示3.3 添加原生Android组件4.问题处理4.1 编译时错误4.2 桌面显示多个ICON问题5.Limitations6.总结1.前言在2018以及以前的版本中,unity到处android工程时是一个完整的AndroidStudio工程。从2019开始unity中到处工程是一个module,所以用原创 2022-05-11 20:52:36 · 2056 阅读 · 0 评论 -
SetReplacementShaer
文章目录1.前言2.正文3.最后1.前言本文是转载文章,可以通过rendertype替换对应的shader或者替换所有shader,当然也可以重置回去。2.正文Camera.SetReplacementShader(mShader,“aType”)。说明:1、mShader中需设置“RenderType"=“aType”。Tags {"RenderType" = "aType"}2、运行时会找到所有RenderType与mShader中RenderType相同(即”aType“)的shad原创 2022-05-08 12:32:58 · 212 阅读 · 0 评论 -
Unity深度获取
文章目录1.前言2、_CameraDepthTexture3.SetTargetBuffers4.参考文献1.前言Unity中深度问题介绍的比较多,不管是不同平台导致的[0,1]还是[1,0]以及线性非线性等问题,在此介绍一篇比较长但是比较全的文章,此文作者通过顶点的z值计算深度,并自写了深度线性化函数。此两个方法对应ShaderLab中的Linear01Depth以及LinearEyeDepth两种方法。本文不讨论深度的问题,只讨论如何获取深度的问题。unity获取深度有两种方法,如下文。2、_C原创 2022-05-08 12:07:43 · 3220 阅读 · 1 评论 -
ARCore背景渲染
文章目录1.前言2.ARCore流程3.渲染流程3.1 数据更新1.前言像Vuforia、ARCore、EasyAR等sdk,使用时都会将背景与虚拟进行叠加。此功能的实现有很多种,比如直接在Camera的远平面附近添加一个UI或者quad,将camera的画面付给它;比如用CommandBuffer将画面最先渲染;或者重写shader,更改渲染顺序或者设置深度值。ARCore采用的CommandBuffer的方式,但是里面有很多细节需要说明。2.ARCore流程ARCore背景渲染脚本为ARCore原创 2022-05-06 17:44:34 · 557 阅读 · 0 评论 -
实现3dof功能
文章目录1.前言2.代码实现1.前言现实中手机移动,可以看到相应转动的虚拟画面,采用手机自带的惯导就可以实现,当然也可以借助手机ar的插件,比如arcore或者easyAR等。2.代码实现using System.Collections;using System.Collections.Generic;using UnityEngine;public class GyroCameraController : MonoBehaviour{ private Gyroscope gyro原创 2021-05-16 17:35:44 · 483 阅读 · 0 评论 -
单例模式再议
文章目录1.前言2.单例的几种方式2.1 非线程安全模式2.2 简单线程安全模式2.3 双重验证线程安全模式2.4 非锁模式的线程安全2.5 其他模式3.Unity单例模式3.1 特殊性3.2 一个单例4.结论1.前言曾多次对unity或者c#在使用单例时的一些问题进行过讨论,即有充满戾气的讨论,也有理性的总结与封装(封装成一个抽象类,使用时直接继承),但多次使用时还是有一些不同的想法,故此文章诞生。此文将从纯C# 层展开。2.单例的几种方式此部分为纯C#层面2.1 非线程安全模式此种线程不安全原创 2021-05-16 14:28:19 · 87 阅读 · 0 评论 -
单例模式
文章目录1.最简单的单利2.构造函数法3.DontDestroyOnLoad情况下的单例模式4.静态属性或者静态方法法5.单例模式乱象5.1 单例变”多例“5.2 使用锁(lock)介绍几种unity单例1.最简单的单利这是最简单有效,最实用最没问题的单利模式。如果说存在什么问题,那就是在别的脚本awake中引用,若果其他脚本中的awake比上述awke先执行,则会报空引用。此问题通过设置脚...原创 2019-10-17 19:53:13 · 234 阅读 · 0 评论 -
Camera清除图像
文章目录1.前言2.实现3.结语1.前言Unity清楚某个Camera画面,最简单的方式直接设置SetActive(false)。在此采用CommandBuffer清除图像。2.实现public class EyeSightController : MonoBehaviour{ public Camera leftCamera; public Camera rightCa...原创 2019-12-05 15:00:05 · 320 阅读 · 0 评论 -
UnityC#调用so文件
文章目录1.so源文件1.1 NaviteCode.h1.2 NaviteCode.cpp2.调用方法Unity中C#调用so文件中返回字符串。1.so源文件1.1 NaviteCode.h #ifndef __NativeCode_H__ #define __NativeCode_H__ #if 0 #define EXPORT_DLL __declspe...原创 2019-11-23 17:09:35 · 1701 阅读 · 0 评论 -
Android生成可供调用的jar/aar包
文章目录1.jar包与aar包区别2.生成jar/aar包3.Unity调用说明本篇对Android生成可供外部调用的SDK包进行阐述。1.jar包与aar包区别通过实践结果可知,jar为纯粹的代码包,只包含*.class文件,而aar包则是一个比较全面的压缩包,既包括代码包即jar包,也包含manifest.xml文件,也可以包含其他资源如图片等。所以可以根据需要选择类型。如果只生成jar...原创 2019-11-02 15:46:38 · 169 阅读 · 0 评论 -
Unity调用Android简介
文章目录1.Unity调用Android2.Unity获取android类3.Unity获取android类的实例3.Unity获取Unity的Activity1.Unity调用Android根据unity用户手册,unity可以采用native code(c/c++),但是也提供了C#调用方法,本文对此进行简单讲解。2.Unity获取android类通过下述方法即可获取包com.ii.i...原创 2019-11-02 16:05:43 · 359 阅读 · 0 评论 -
OnRectTransformDimensionsChange 的拓展
文章目录1.粒子裁切1.1 实时传递UI Rect变更信息1.2 可裁切的Shader2.实现分块血条2.1 准备2.2 实现原理2.3 具体实现3.基于OnRectTransformDimensionsChange 的拓展_(二)4.粒子自适应UIOnRectTransformDimensionsChange是指当UI的RectTransform更改时的回调,只要继承UIBehavior即可获...原创 2019-10-21 14:23:22 · 2831 阅读 · 0 评论 -
渲染顺序
文章目录1.Canvas2.UI元素3.三维物体4.解决问题UI的遮挡顺序(渲染顺序)是根据每一个UI元素在Hierarchy下的顺序来,即后面的UI遮挡前面的UI,今天来理解一下渲染顺序.1.Canvas默认新建Canvas时,其RenderMode为ScreenSpace-Overlay,其意思为此Canvas只渲染到屏幕上,方式为叠加(至于怎么叠加为做深入研究,从操作上来说不需要渲染相...原创 2019-10-21 14:05:42 · 871 阅读 · 0 评论 -
可资源化的脚本ScriptableObject
文章目录1.创建可资源化的脚本2.资源化脚本3.资源读取脚本继承ScriptableObject,即可创建可资源化的脚本。1.创建可资源化的脚本//可进行资源化处理的脚本需要继承自ScriptableObject//对应的数据需要可以序列化//添加CreateAssetMenu可以直接再Create-ScriptableTest中创建[CreateAssetMenu]public c...原创 2019-10-21 13:52:30 · 942 阅读 · 0 评论 -
Atlas图集
文章目录1.设置2.创建spriteAtlas3.动态加载3.1 动态加载Resources下的图集3.2 动态加载其他位置下的图集4.原则unity版本2018.2.141.设置在EditorSettings中把SpritePacker的mode设置为AlwaysEnabled2.创建spriteAtlasCreate-spriteAtlas,在Objects for Packing中...原创 2019-10-21 13:43:51 · 517 阅读 · 0 评论 -
自定义脚本模板
文章目录1.固定模板2.扩展编辑器实现2.1 创建编辑器扩展脚本2.2 放入脚本模板2.3 使用1.固定模板在unity安装目录下的\Editor\Data\Resources\ScriptTemplates\81-C# Script-NewBehaviourScript.cs.txt即为脚本模板,直接修改成自己需要的即可。2.扩展编辑器实现第二种方法来自宣雨松的《unity3D游戏开发的...原创 2019-10-21 13:31:17 · 379 阅读 · 0 评论 -
Animation动画播放
文章目录1.播放默认动画2.采用AddClip方法3.采用animation组件的animations数组添加动画片段4.直接用动画名字播放5.动画复位Animation 播放动画流程如下:1.播放默认动画直接将动画拖入动画对象animation组件的animation变量中,然后加入如下代码既可以播放(此处采用toggle控制动画的播放)public Animation ani; ...原创 2019-10-19 15:16:52 · 2157 阅读 · 0 评论 -
Unity动画
文章目录1.新建AnimatorController2.创建动画状态3.动画绑定4.设置开关5.绑定开关6.代码控制7.动画倒播基于animator的动画播放流程:1.新建AnimatorController2.创建动画状态在上述界面右键Create state->Empty,并命名为Init,重复上述步骤并命名为State01,在Empty上右键Make Transition并在...原创 2019-10-19 15:12:57 · 145 阅读 · 0 评论 -
音频播放
文章目录1.播放默认音频2.代码播放3.采用静态方法播放1.播放默认音频默认播放音频只需要在audiosource组件中audioclip参数拖入相关音频,然后通过audiosource.Play()即可播放。2.代码播放即通过代码给audiosource的audioclip赋值,然后播放即可。public AudioSource audioSource; public Audi...原创 2019-10-16 11:15:27 · 275 阅读 · 0 评论 -
HTC Vive开发
文章目录前言1.Camera以及Ccontroller2.Controller各个按钮功能3.VRTK前言使用HTC vive基于unity做虚拟现实,需要用到steamVR插件,最近查找了很多资料,稍微做一下总结。做虚拟现实无非是头显在场景中的camera功能以及手柄的操作功能。1.Camera以及Ccontroller第一种方法:此方法为最简单最直接的方法,直接把插件中的prefab拖...原创 2019-10-16 14:39:45 · 326 阅读 · 0 评论 -
Unity事件
文章目录前言1.响应事件的方式1.1 通过集成接口1.2 添加EventTrigger组件1.3 代码添加2.UGUIEventListener2.1 UGUIEventListener代码2.2 UGUIEventListener使用前言本文主要转载于http://www.cnblogs.com/zou90512/p/3995932.html?utm_source=tuicool&u...原创 2019-10-16 11:50:40 · 375 阅读 · 0 评论 -
DropDown控件
首先要获取到下来控件组件frameDpdown,然后add就可以了,在此要注意一点,就是 Dropdown.OptionData 定义要在循环体内部,否则add的结果都是添加的最后一项。 frameDpdown.options.Clear(); //Dropdown.OptionData optDataFrame = new Dropdown.OptionData(...原创 2019-10-16 11:37:55 · 431 阅读 · 0 评论 -
射线检测
文章目录1.射线Ray2.屏幕射线unity中射线检测时非常实用也经常实用的一种手段。下面讲解一下射线检测问题1.射线Ray根据射线端点和射线的方向定义一条射线,Ray ray= new Ray(transform.position, transform.forward);定义一个包含射线投射信息的变量RaycastHit hit,并进行射线检测Physics.SphereCast:Ra...原创 2019-10-16 11:09:43 · 211 阅读 · 0 评论 -
WWW网络请求
文章目录1.Get方法1.1 文本下载1.2 Texture下载2.Post方法2.1 基本方法2.2 Post上传二进制文件3.补充1.Get方法1.1 文本下载private string weatherApi = "http://www.sojson.com/open/api/weather/json.shtml?city={0}"; //private string weat...原创 2019-10-16 11:05:24 · 25521 阅读 · 0 评论 -
简单四元数解释
文章目录前言1.Quaternion.LookRotation()2.Quaternion FromToRotation(Vector3 fromDirection, Vector3 toDirection)3.Quaternion operator *(Quaternion lhs, Quaternion rhs)前言从应用角度说一下unity Quaternion,Quaternion是四...原创 2019-10-16 10:49:27 · 215 阅读 · 0 评论 -
设置Image图片
文章目录1.读取目标文件2.转换成纹理3.转换成精灵4.给image赋值5.完整代码从任意文件目录下读取文件并在unity中显示:1.读取目标文件byte[] imageByte = File.ReadAllBytes(imagePath);2.转换成纹理texture.LoadImage(imageByte);3.转换成精灵Sprite sprite = Sprite.Crea...原创 2019-10-16 10:41:45 · 554 阅读 · 0 评论 -
VideoPlayer
文章目录前言1.新建VideoPlayer2.视频播放3.视频播放Target4.播放进度控制5.完整代码6.更新前言unity5.6开始增加了videoPlayer,使得视频播放相对比较简单,项目需求进行了一下研究应用,也遇到很多坑,Google 百度一下发现确实有这些问题,一些简单问题如下:1)播放无声音2)通过slider控制播放进度3)视频截图(texture->textu...原创 2019-10-16 09:42:45 · 1234 阅读 · 0 评论 -
资源路径问题
文章目录前言1.Application.dataPath2.Application.streamingAssetsPath3.Application.temporaryCachePath4.Application.persistentDataPath5.自己输出路径6.资料路径前言unity作为通用平台,资源读取在各个平台有差异,尤其是移动端和PC端。untiy不同的资源与不同的路径对应,一下...原创 2019-10-15 18:29:51 · 1220 阅读 · 0 评论 -
AssetBundle
文章目录前言1.基本操作1.1 生成AssetBundle1.2 同步本地加载1.3 异步本地加载1.4 WWW异步加载1.5 UnityWebRequest方法1.6 加载Assetbundle内容1.7 通过打包的总文件获取依赖2.总结2.1 AB加载方式2.2 从AB中加载资源2.3 AB的卸载前言AssetBundle(简称AB包)是unity提供的一种资源压缩包,可以通过下载更新的方...原创 2019-10-15 13:53:57 · 135 阅读 · 0 评论 -
UnityWebRequest
文章目录前言1.简单封装代码1.1 Get方法调用1.2 调用Get方法只获取图片1.3 post方法2.调整版3.Post小问题4.UnityWebRequest LLAPI前言UnityWebRequest是新的网络请求Api,分为LLApi和HLApi,其中LLApi为低级api,所谓低级api是指只是提供最基本的api接口,然后需要通过不同的参数来确定请求方式。为此unity提供了高...原创 2019-10-15 09:30:58 · 190 阅读 · 0 评论 -
Profile
转贴链接:https://www.jianshu.com/p/ca2ee8a51754转载 2019-10-15 09:15:26 · 77 阅读 · 0 评论 -
脚本生命周期
再此只阐述脚本构造函数,静态构造函数,awake和start运行周期,测试脚本如下:public class Sequences : MonoBehaviour{ static Sequences() { Debug.Log("Static method"); } Sequences() { Debug.Log("UnS...原创 2019-10-15 09:14:42 · 121 阅读 · 0 评论