Unity学习笔记11

一、视频播放功能

1.如何让视频在游戏场景中播放?

在Assets目录下添加一个渲染器纹理,步骤:新建→渲染器纹理

首先在创建一个平面,想让视频在平面上显示。在平面上添加一个组件 Video Player

然后将视频文件拖拽到视频剪辑位置上,把渲染模式改为渲染器纹理,再将之前创建的渲染器纹理拖拽过来。

现在视频播放的所以内容都会显示在这个纹路当中,现在只用把这个渲染器纹理拖拽到这个平面上即可,效果如下:

运行游戏后就可以播放了。

2.用脚本控制播放

player = GetComponent<VideoPlayer>();

void updata (){

if( Input.GetKeyDown(KeyCode.Space ) ){
     if( player.isPlaying){

         player.Stop(); 

          }else{

           player.Play();
           } 

      }

二、通过脚本控制物体

创建一个物体当作玩家,为该物体添加角色控制组件Character Controller。

在脚本中得到这个组件

private CharacterController player;
player = GetComponent<CharacterController>();

现在希望用W、A、S、D去控制角色,由于这些方向按键会获取两个轴向数值:

水平轴;float horizontal = Input.GetAxis("Horizontal");

垂直轴:float vertical = lnput.GetAxis("Vertical");

当我们按了A D的时候就会返回-1和1的数值 ,并且这些数值是渐进的过程。

然后通过这两个轴向就可以知道是否按了哪个方向键了。

再将其创建成为方向向量

Vector3 dir = new Vector3(horizontal,0, vertical);

同时可以检测这个方法向量,按下对于的键可以生成对应的方向向量

Debug.DrawRay(transform.position, dir,Color.red);
比如:按S

现在拿到这个方向就可以开始移动了,朝向该方向移动

player.SimpleMove(dir);

三、Unity Build-in渲染管线

渲染流程

首先调用Randor()开始渲染

1.剔除:视椎剔除、遮挡剔除、层级等规则。将不想看到和看不到的物体排除掉。

2.渲染顺序:按距离、渲染队列等规则。为剩下的物体确认一个渲染的顺序。

3.打包数据含大量数据、参数。

4.调用Shader :SetPassCall、Drawcall。

5.GPU渲染管线:会把3D的模型数据渲染成2D的图像。将这些图像输出到一个叫帧缓冲区的一个地方 。

6.后处理;通过CPU端去拿到帧缓冲区的一个图像,然后再调用Shade在进入我们的GUP渲染管线对帧缓冲区的图像进行二次的修改(比如:说调色、Bloom之类的后处理效果),最终显示到平面面前。

其中GPU渲染管线内容一共四个步骤:

1.顶点处理阶段(Vertex Shader)。
2.图元装配及光栅化阶段(硬件阶段)。
3.片元处理(Fragment Shader)。
4.输出合并。

简略介绍CUP应用程序阶段

1.剔除Culling

①视椎体剔除(Frustum Culling)

视锥体是指摄像机根据FOV参数、远、近裁面这几个参数共同组成的一个金字塔形状的立方体

视椎体剔除就是我们的模型会跟这个视椎体做一个碰撞检查,如果它跟我们的视椎体有相交的部分就说名应该被绘制,如果完全没有相交就说明这个模型是我们看不到的,就应该被剔除掉 。

对于复杂模型的表面会生成一个AABB的包围盒 

就用简单的一个AABB包围盒跟这个视椎体做一个碰撞检测。
 

②层级剔除(Layer Culling Mask)、遮挡剔除(Occlusion Culling)等等。

层级剔除:可以根据某一些特定层级的物体,对它进行一个选择性的排除。比如给物体单独设定一个层级,然后在Camera组件上找到一个Culling Mask选项,将之前设定的层级关闭,这样可以把这一层上面的所以物体剔除了。

2.排序Sort

①渲染队列 RenderQueue。

这个数值越小就表明越先渲染 。如果数值相等就分以下两种情况

对于不透明队列(RenderQueue < 2500)的情况,按摄像机距离从前到后排序

对于半透明队列(RenderQueue > 2500)的情况,按摄像机距离从后到前排序

然后将会按照渲染的顺序逐个的把场景里面所有的物体的数据给提交到GPU端。

这些打包发送给我们的GPU端的数据包含如下内容,打包好了之后回调用两个指令,GUP渲染管线收到这两个指令之后就会开始工作了。





 

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

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

相关文章

黄金比例设计软件Goldie App mac中文版介绍

Goldie App mac是一款测量可视化黄金比例的工具。专门为设计师打造&#xff0c;可以帮助他们在Mac上测量和可视化黄金比例&#xff0c;从而轻松创建出完美、平衡的设计。 Goldie App mac体积小巧&#xff0c;可以驻留在系统的菜单栏之上&#xff0c;随时提供给用户调用。 拥有独…

如何控制Spring工厂创建对象的次数?详解Spring对象的声明周期!

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

Dijkstra算法(贪心),Floyd-Warshall算法(动态规划), Bellman-Ford算法——用Python实现

图论中最短路径三剑客 前言一、Dijkstra算法&#xff08;贪心&#xff09;1.1 Dijkstra在生活中的应用举例1.2 设计思路1.3 算法应用实例1.3.1 以交通规划为例1.3.2 Dijkstra算法执行步骤1.3.3 python代码 1.4 时空复杂度 二、Floyd-Warshall算法&#xff08;动态规划&#xff…

fiddler设置过滤你就这样做,一做一个不只声!

fiddler设置过滤 基本的过滤操作流程以百度为例 步骤&#xff1a; 1、右侧高级工具栏点击Filters》勾选Use Filters》选择Show only Internet Hosts和Show only the following Hosts》在文本框中输入host地址 2、点击Changes not yet saved》再点击Actions》Run Filterset …

如何获取高质量的静态住宅IP代理?常见误区与注意事项

静态住宅IP代理在今天的网络营销领域扮演着至关重要的角色&#xff0c;静态住宅IP代理以其稳定性和高匿名性&#xff0c;为互联网业务提供了一个安全的执行环境。通过模拟真实用户的网络行为&#xff0c;这些IP代理降低了企业在网络营销活动中被识别和封禁的风险。它保护了企业…

echarts修改tooltip默认的圆点图标为其他样式

业务需求&#xff0c;默认是圆点&#xff0c;需要把线的由圆点改为线 红色线是理论&#xff0c;点是历史理论&#xff0c;绿色线是实际&#xff0c; 点是历史实际&#xff0c;在series里的顺序也是这样排的。 打印出来的params里的marker就是圆点&#xff0c;改这段代码就可以了…

使用STM32 HAL库驱动光电传感器的设计和优化

光电传感器在许多应用中起着重要的作用&#xff0c;例如自动计数、距离测量等。STM32微控制器和HAL库提供了丰富的功能和易于使用的接口&#xff0c;使得光电传感器的设计和优化变得更加便捷。本文将介绍如何使用STM32 HAL库驱动光电传感器的设计和优化&#xff0c;包括硬件设计…

OpenCV | 傅里叶变换——低通滤波器与高通滤波器

import cv2 #opencv 读取的格式是BGR import numpy as np import matplotlib.pyplot as plt #Matplotlib是RGB %matplotlib inline def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows() 傅里叶变换 傅里叶变换的作用 高频&#xff1a;变化剧烈…

JAVA文件IO, File类, 字符流,字节流

文章目录 文件IO1. File2. IO流2.1 字符流2.1.1 Reader2.1.2 Writer 2.2 字节流2.2.1 InputStream2.2.2 FileInputStream2.2.3 利用Scanner进行字符读取2.2.4 OutputStream 文件IO I: Input, 从硬盘往内存读数据 O: Output, 从内存往硬盘输出数据 1. File Java 中通过 java…

解析d3dcompiler_47.dll缺失怎么修复,4种方法修复d3dcompiler_47.dll文件

d3dcompiler_47.dll缺失怎么修复&#xff1f;其实在我们使用计算机操作的过程中&#xff0c;有时会遇到一些由dll文件错误导致的问题&#xff0c;其中d3dcompiler_47.dll丢失就是这样一种。那么究竟d3dcompiler_47.dll缺失是什么意思&#xff0c;为何它会发生丢失&#xff0c;以…

PWM占空比原理是什么,几个实例带你进一步了解

PWM : 即脉冲宽度调制(Pulse Width Modulation) 脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术&#xff0c;广泛应用在从测量、通信到功率控制与变换及嵌入式领域的许多领域中。 PWM控制技术以其控制简单&#xff0c;灵活和动态响应好的优点而…

【用unity实现100个游戏之17】从零开始制作一个类幸存者肉鸽(Roguelike)游戏4(附项目源码)

文章目录 本节最终效果前言命中敌人闪白和击退效果敌人死亡效果等级 击杀数 经验绘制经验条显示等级和杀敌数游戏倒计时玩家血条参考源码完结 本节最终效果 前言 本节紧跟着上一篇&#xff0c;主要实现敌人受击死亡效果特效&#xff0c;主角等级、击杀数、经验、血条UI显示。 …

手写promise A+、catch、finally、all、allsettled、any、race

目录 手写promise 同步版 1.Promise的构造方法接收一个executor()&#xff0c;在new Promise()时就立刻执行executor回调 2.executor()内部的异步任务被放入宏/微任务队列&#xff0c;等待执行 3.状态与结果的管理 状态只能变更一次 4.then()调用成功/失败回调 catch是…

内测分发平台是否支持敏捷开发和持续集成?

大家好&#xff0c;我是咕噜-凯撒。敏捷开发和持续集成是软件开发中非常重要的流程和方法。内测分发平台作为应用开发和测试的关键环节需要具备这种能力。下面我简单的介绍一下敏捷开发和持续集成和提供的功能。图片来源&#xff1a;news.gulufenfa.com 敏捷开发是一种迭代、协…

Asp.net core WebApi 配置自定义swaggerUI和中文注释

1.创建asp.net core webApi项目 默认会引入swagger的Nuget包 <PackageReference Include"Swashbuckle.AspNetCore" Version"6.2.3" />2.配置基本信息和中文注释&#xff08;默认是没有中文注释的&#xff09; 2.1创建一个新的controller using Micr…

SELinux(一) 简介

首发公号&#xff1a;Rand_cs 前段时间的工作遇到了一些关于 SELinux 的问题&#xff0c;初次接触不熟悉此概念&#xff0c;导致当时配置策略时束手束脚&#xff0c;焦头烂额&#xff0c;为此去系统的学习了下 SELinux 的东西。聊 SELinux 之前&#xff0c;先来看看什么叫做访…

Linux以nohup方式运行jar包

1、在需要运行的jar包同级目录下建立启动脚本文件&#xff1a; 文件内容&#xff1a; #! /bin/bash #注意&#xff1a;必须有&让其后台执行&#xff0c;否则没有pid生成 jar包路径为绝对路径 nohup java -jar /usr/local/testDemo/jdkDemo-0.0.1-SNAPSHOT.jar >/us…

C51--4G模块

EC03-DNC&#xff1a;4G通信模块 EC03-DNC 功能特点&#xff1a; 采用最新4G CAT1方案&#xff1b; 支持数据透明传输; 支持TCP、UDP 网络协议; 支持心跳包、注册包功能最大支持64个字节数&#xff1b; 支持MQTT协议&#xff0c;支持接入OneNet平台、百度云平台、阿里云平台的…

微信小程序开发——项目开发入门

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 概述 本文重点介绍微信小程序开发者工具的下载与安装与项目开发入门。 下载开发者工具 请在官方网站下载微信小程序开发工具&#xff1b;图示如下&#xff1a; 请依据实际…

解决electron-builder打包不成功只能输出tgz文件的问题

现象&#xff1a; 对应项目里配的指令&#xff1a; 但就是死活不成功&#xff0c;只能输出tgz压缩文件。 最后一咬牙下载了官方的electron-quick-start拿来试试&#xff0c;结果还是一样。 一时间没想法了。 后来突然脑袋灵光一闪&#xff0c;去他妈的直接npx 执行看看&…