unity

unity, multi pass shader中的surface pass

眉间皱痕 提交于 2020-02-20 01:43:52
今天尝试写一个multi pass shader,但其中有一个Pass是surface pass,总是莫名奇妙地报错。后来看到下面帖子: http://forum.unity3d.com/threads/achieving-a-multi-pass-effect-with-a-surface-shader.96393/ 此帖3楼中写道:“ You can add arbitrary passes while using a surface shader. You just stick everything else in Pass {} tags and ensure that your surface shader isn't inside any of them (as Unity will generate them as it parses the surface shader). ” 即multi Pass shader中的surface Pass都不要加Pass{}标签。因为surface Pass在编译时会自动生成Pass{}标签。 --- 另外一个相关的帖子:http://answers.unity3d.com/questions/354774/index.html?sort=oldest 来源: https://www.cnblogs.com/wantnon/p

Unity C# Job System介绍(一) Job System总览和多线程

旧巷老猫 提交于 2020-02-19 07:10:14
C# Job System 总览 Unity的C# Job System使用户可以编写与Unity其他部件交互的多线程代码,同时让编写正确的代码变得更容易。 编写多线程代码可以提供更好的性能表现。这包括非常明显的帧数提升。C# job协同Burst编译器可以提升代码生成的质量,这也会使得移动设备电量消耗大幅度降低。 C# Job System的一个非常关键的方面是它可以融入Unity内部的原生Job System。这使得用户的代码可以和Unity共享 worker threads 。这种合作避免了创建更多线程,因为这可能会造成对于CPU资源的争抢。 关于更多的信息,可以观看演讲 Unity at GDC - Job System & Entity Component System 什么是多线程? What is multithreading?​docs.unity3d.com 在一个单线程的计算系统中,当输入指令的时候,结果会在同时计算产生。加载和运行程序的时间取决于你需要CPU处理的工作的数量。 What is multithreading? 在一个单线程的计算系统中,当输入指令的时候,结果会在同时计算产生。加载和运行程序的时间取决于你需要CPU处理的工作的数量。 多线程是一种编程技术,充分利用CPU的多个核心可以在同一时间处理多个不同线程的能力。任务或者指令会在同一时间执行

[Unity基础] 单例类Singleton

亡梦爱人 提交于 2020-02-19 04:29:27
using System ; using System . Collections ; using System . Collections . Generic ; using UnityEngine ; namespace Common { //namespace 域名.项目名称.模块 /// <summary> /// 脚本单例工具类 /// 特点: /// 1.唯一 /// 2.常用 /// 功能: /// 1.保持一个游戏对象的单一,整个进程只有这一个对象 /// 2.对单一游戏对象的控制和调用 /// 解释: /// 泛型类<T>,为了子类可以传递类型 /// 泛型约束:类型参数必须是指定的基类或派生自指定的基类。 /// 子类需要继承此单例类 /// 如何使用: /// 1.继承时,必须传递子类类型 /// 2.在任意脚本生命周期中,通过子类类型访问Instance属性, XXXX.Instance.XXX /// </summary> public class MonoSingleton < T > : MonoBehaviour where T : MonoSingleton < T > { // T 代表子类型 通过 where T : MonoSingleton<T> 来体现 //按需加载 private static T instance ; /

Unity菜鸟开发纪要——CommandBuffer

Deadly 提交于 2020-02-17 11:19:44
在做UI背景模糊的时候,权衡了几种效果,尝试一下CommandBuffer这种神奇的东西。 CommandBuffer是Unity2018以后推出的,似乎听说2019已经没有了。项目使用的还是2018,所以看看。去网上搜索资料的时候,还是之前那样,要么是官方资料,要么就是一堆复制粘贴的。我喜欢转成小白语言,争取看一次就彻底明明白白的。 CommandBuffer是个啥玩意,其实就相机暴露给外面的一个接口,通过在这个接口中设置我们需要的渲染指令,去修改相机的渲染结果。但凡有一点Unity基础的都知道,Unity的相机如果没有做任何处理,那么在运行窗口中显示的东西就是他本来的样子,一个“正常”相机的渲染顺序就是官方给出的那种到处被贴出来的示意图: ![官方示意图](https://img-blog.csdnimg.cn/20200217102225431.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NDYwNzMx,size_16,color_FFFFFF,t_70) Unity中相机的渲染顺序就是这样,CommandBuffer就是在相机执行这样的顺序的时候,插入你编写的处理

Unity中使用Microphone录音保存以及回放

僤鯓⒐⒋嵵緔 提交于 2020-02-16 22:14:34
录音类 MicrophoneManager包含开始录音,停止录音,播放录音以及录音的保存等。 public partial class MicrophoneManager : MonoBehaviour { private static MicrophoneManager m_instance; private static string[] micArray = null; //录音设备列表 private AudioClip audioClip; private DateTime beginTime; public float sensitivity=100; public float loudness=0; const int HEADER_SIZE = 44; const int RECORD_TIME = 10; const int RECORD_RATE = 44100; //录音采样率 //void Awake() //{ // m_instance = this; //} public static MicrophoneManager GetInstance() { if (m_instance == null) { micArray = Microphone.devices; if (micArray.Length == 0) { Debug.LogError(

Unity 刚体Rigidbody的API

房东的猫 提交于 2020-02-16 14:30:12
给刚体施加一个力 void Update () { float h = Input.GetAxis("Horizontal");//左右方向 float v = Input.GetAxis("Vertical");//上下方向 //给刚体施加一个力(力的方向 * 力的大小) GetComponent<Rigidbody>().AddForce( new Vector3(h,0,v) * force ); } 碰撞检测 //碰撞检测 void OnCollisionEnter(Collision collision) { //collision.collider//获取碰撞到的游戏物体身上Collider组件(碰撞器) //string name = collision.collider.name; //获取碰撞到游戏物体的名字 //print(name);//print可以把一个字符串输出显示到控制台 if (collision.collider.tag == "PickUp") { Destroy(collision.collider.gameObject); } } 来源: CSDN 作者: Cuijiahao 链接: https://blog.csdn.net/cuijiahao/article/details/104339394

在谈GPUInstance

筅森魡賤 提交于 2020-02-16 14:26:20
官方网址:https://docs.unity3d.com/Manual/GPUInstancing.html 之前的博客:https://blog.csdn.net/wodownload2/article/details/103705433 知乎:https://zhuanlan.zhihu.com/p/34499251 csdn:https://blog.csdn.net/leonwei/article/details/73274808 introduction use gpu instancing to draw (or render) multiple copies of the same Mesh at once, ’ using a small number of draw calls. it is useful for drawing objects such as buildings, trees and grass, or other things that appear repeatedly in a Scene. gpu instancing only renders identical Meshes with each draw call, but each instance can have different parameters (for

Unity调用摄像头并截图

徘徊边缘 提交于 2020-02-15 17:18:46
首先界面是这样的,很简易 直接上代码 using System . IO ; using UnityEngine ; public class WebCamera : MonoBehaviour { [ Tooltip ( "返回的照片数据,根据返回的照片,进行照片的识别和比对认证等等!" ) , Space ( 5 ) ] [ Header ( "摄像头拍摄的照片" ) , ] public WebCamTexture camTexture ; //摄像头拍下的图片数据 [ Header ( "摄像头设备名" ) ] private WebCamDevice [ ] devices ; [ Tooltip ( "USB摄像头设备" ) , Space ( 5 ) ] [ Header ( "摄像头设备名" ) ] public string deviceName ; //摄像头设备名称 public bool isClick ; //是否点击了按钮 private void Start ( ) { isClick = false ; } //初始化摄像头显示的图像的大小 private void Awake ( ) { camTexture = new WebCamTexture ( deviceName , 800 , 600 , 60 ) ; } /

Android与Unity交互研究

纵然是瞬间 提交于 2020-02-13 12:16:36
Android与Unity交互研究 转载请注明出处: http://blog.csdn.net/crazy1235/article/details/46733221 Android与Unity交互研究 unity与android交互的由来 unity简介 unity与android交互介绍 unity调用android的方法 android调用untiy的方法 unity与android交互的由来 本人在项目开发过程中。遇到这样一个需求,把unity的场景放到android中去显示。刚開始做的时候也是一头雾水。unity是什么东西都没听说过。后来也是查询非常多资料。才实现了需求的效果。 所以把自己的一些总结记录于此。方便各位同行參考。 unity简介 unity是能够开发诸如三维视频游戏、建筑模型、三维动画等交互类内容的多平台综合游戏开发工具,具有非常强大的 跨平台性 。在unity之中编写好场景和程序之后。能够导出Android、ios、windows phone、PC等多个平台的版本号。 如上图,列出了unity能够导出的全部平台。 unity与android交互介绍 一般的都是。把unity作为android程序中的一部分。将一个u3d场景当成一个界面或者一个界面的一部分。 还有的是把android作为unity的一部分进行开发。只是这样的形式的开发非常少。也不是必需。