最新两年工作经验总结
最新两年工作经验总结
- 前言
- URP的使用
- 1:如何开启URP
- 1、老项目升级为URP
- 2、创建新项目时选择URP创建
- 2:URP阴影的设置
- PolyBrush的使用(地图编辑插件)
- 制作山峰or低谷
- 边缘柔化
- 雨刷上色
- 制造场景中的物体
- 贴图地形创建
- 容易踩坑的点
- ProBuilder(地图编辑插件)
- 碎碎念
- 使用方法
- ProGrids 插件(辅助参考线,一般用不到,而且可能触发bug)
- 自动导航 Navigation
- 静止不可交互(通过)的物体
- 会动不可交互(通过)的物体
- 主句的参数设置
- Camera多视角的使用
- 摄像机锁定视角跟随(多种方式实现)
- 第一种方式:写一个Cinema管理类
- 第二种方式:使用Cinemachine插件
- 摄像机自由视角(第三人称)
- 第一种方式:自己写脚本
- 第二种方式:使用Cinemachine插件
- 容易踩坑的地方
- 快捷键冲突
- 不同的怪物视角看起来忽高忽低
- 迷雾
- 后处理
- 动画控制
- 主角的移动攻击(使用协程)
- 怪物的AI(使用状态机)
- 状态机
- 动画layer分层
- 也可以使用行为树插件
- 动画事件
- 动画状态机
- 项目实例
- 踹晕的实现方法:
- 扔石头击退玩家Or击飞石头对石头人造成伤害:
- 踹晕玩家
- 注意点
- 遮挡剔除
- 编写Shader Graph
- UI相关
- Canvas面板的使用
- 怪物的血条
- 玩家的血条
- Canvas Group
- ScriptableObject
前言
公司收益不行,整个组都进行了裁员,给了N+1的赔偿,还可以,休息一两月之余顺便总结下这两年的工作经验
URP的使用
1:如何开启URP
1、老项目升级为URP
随便百度一下就好,此处不过多赘述,附上随便找的一个链接
老项目升级为URP
2、创建新项目时选择URP创建
如果你的项目没有该项,可能是版本暂不支持
2:URP阴影的设置
如图所示,在项目文件中找到URP设置文件,点击,然后在属性面板中更改shadows即可。
PolyBrush的使用(地图编辑插件)
制作山峰or低谷
在地图上按住左键滑动即可形成山峰,Ctrl+左键是低谷
边缘柔化
雨刷上色
可选择填充或者其他模式
制造场景中的物体
将预制体拖到Current Palette中即可
贴图地形创建
容易踩坑的点
绘制完地图之后一定要取消ProlBrush的选中,否则无法在场景中选中物体
ProBuilder(地图编辑插件)
碎碎念
大家都知道,地图这部分应该全权交由美术负责,但是中国就是人太多,你不干有的是人干,越来越卷,中小型公司没有具体的地图编辑人员,只能交由开发自己做,不得不学一些地图编辑插件
使用方法
Probulider可以创建多顶点的地面,如果直接更改Scale只会改变大小,不能改变顶点数。另外:Probulider创建出来的顶点不在中心,可以选择选中物体之后选择中间最右边的icon点击一下即可。
ProGrids 插件(辅助参考线,一般用不到,而且可能触发bug)
使用前需要先勾选上Edit中的Rroject Setting中的一项属性,如上图所示。
ProGrids可以实现辅助参考线,场景中物体按照设置好的单位移动等功能,我个人不是很喜欢用
自动导航 Navigation
静止不可交互(通过)的物体
场景中不动的物体设置为 Navigation Static,然后在Navigation的属性面板中设置是否可以移动
会动不可交互(通过)的物体
场景中会移动并且主角不能通过的地方需要用到NavMeshObstacle,勾选上Carve属性即可
主句的参数设置
给主角添加上NavMeshAgent组件,其中身高宽度等参数要和Navigation中的Agent属性参数对应上,否则可能出现Bug
Camera多视角的使用
摄像机锁定视角跟随(多种方式实现)
第一种方式:写一个Cinema管理类
第一种比较耗费时间,就是自己写一个Cinema管理类,实现自己想要的功能
第二种方式:使用Cinemachine插件
在unity本体中搜索Cinemachine直接导入。
然后菜单栏多出一个
选择其中的CreateVirtualCinema即可。
将你想跟随的物体拖拽到follow中。
然后调整想要的角度,之后按Ctrl+Shift+F快速锁定即可。(可能会和其他快捷键冲突,可以在GameObject菜单栏中选择Align With View)
摄像机自由视角(第三人称)
第一种方式:自己写脚本
第二种方式:使用Cinemachine插件
在Unity面板中Cinemachine菜单栏创建一个FreeLookCamera,如图所示根据自己的喜好设置相关参数
follow与上面的锁定视角一样,此处不再过多赘述
Axis Control 控制视角的移动,左右上线填写Project Settings->Input Manager的值
Binding Mode中有自由,也有固定跟着玩家视角,这个看个人需求。
容易踩坑的地方
快捷键冲突
Ctrl+Shift+F可能会和其他快捷键冲突,尤其是开了多个软件的情况下,Unity的快捷键优先级不高。可以在GameObject菜单栏中选择Align With View。
不同的怪物视角看起来忽高忽低
美术给的资源有问题(中小型公司流程不规范或者美术干活的时候没注意),中心店在脚下导致观察的视角很怪。在游戏物体内部创建一个空物体,然后观察这个空物体即可。
迷雾
在Lighting属性栏的Environment面板中自信设置,此处不过多赘述(程序员没艺术思想,还是交给专业的来)
后处理
在Hierarchy面板中右键创建各种volume,自己调试,理由同上,程序员没有艺术细胞。一堆参数根据自己的喜好调整。
动画控制
使用的Animator控制,后面涉及到攻击细讲,目前只是用一个Speed的浮点数控制。
主角的移动攻击(使用协程)
当玩家点击怪物的时候,需要做两个步骤:
1:判断与怪物之间的距离(尽量不要写在Update中,不然可能和移动的逻辑搞混,因此需要用到携程)
2:距离够那么就攻击怪物
怪物的AI(使用状态机)
状态机
所谓的状态机,就是给怪物设定常规的几种状态,封装对应的方法,静止,巡逻,攻击等。每个状态做对应的事情,一般是在Update中不断判断当前是什么状态,然后做对应状态的事情。
动画layer分层
使用多层可以避免出现蜘蛛网的情况(状态之间全是线,互相切换很乱),参数如下设置。
Base Layer作为基础层,控制最基本的idel和walk。
Attack Layer控制攻击相关的动画,当攻击动画结束后,返回空状态(BaseState是创建的一个空状态,没有动画),此时就不会覆盖BaseLayer层。
也可以使用行为树插件
参考我写的这篇文章
动画事件
Animation面板中右键添加。
事件一般不用物理方法计算,例如算时间等方法,一般使用动画事件。
动画状态机
类似MonoBehavior中的Awake,Update方法,可以控制当前动画是你想做的事情。
例如被击晕的情况下不能移动。
项目实例
牛头人BOSS,近距离会用力踹晕玩家。远距离会向玩家丢石头,石头可以击退玩家。玩家可以攻击石头弹回牛头人身边对牛头人造成伤害(有点像原神中的无相之冰)。
踹晕的实现方法:
添加动画事件,当动画进行到踹的那一帧,拿到玩家,调用玩家的动画控制器,进入到眩晕状态。同时添加动画状态机控制,调用上图的Api。
如果想细节一点,例如踢腿的时候玩家已经跑开,此时可以添加一些判断,不过我做的事传奇类游戏,本身只是一个数值比拼,此处就不添加了。
扔石头击退玩家Or击飞石头对石头人造成伤害:
首先创建一个石头的预制体,在牛头人举手的那一帧,创建石头,石头类有状态机,初始是AttackPlayer,碰到玩家或者其他东西变成AttackNothing,被玩家攻击的时候AttackBoss。
石头和玩家各有一个刚体,boss扔向玩家时,给他一个飞向玩家的力,调用刚体的碰撞方法,拿到玩家的相关参数,然后对玩家操作。反之亦然,玩家攻击地上的石头,给他一个玩家当前方向的力,碰到boss也是调用刚体的碰撞方法拿到boss相关参数做操作。
石头碰到boss后可以使用粒子系统添加一个破碎的效果,此处就不过多讨论了。
踹晕玩家
注意点
Parameters参数区分大小写,千万要注意!
遮挡剔除
编写Shader Graph
在实际项目中,玩家角色很容易跑到障碍物后面,此时我们也要让玩家显示出来,比如一个轮廓,此时我们可以写一个简单的Shader Graph。
1、在Project面板中创建一个Shader(Urp shader)
2、在shader面板中创建一个Node,选择Fresnel Effect,然后out节点拖拽衍生出一个Multiply,可以给他赋上颜色等值
3、选中shader右击创建材质,材质属性栏可以更改属性,如图所示
4、在Urp Render设置修改layer层,修改材质,depth(深度)打钩
DepthTest选择 Greater Equal(图上忘记标注了)
5、未被挡住的情况也要设置
UI相关
Canvas面板的使用
Canvas有两种常用的模式,一种是World Space,即将ui放入到游戏世界中。
一种是Screen Space,即UI面板覆盖在整个屏幕上。
怪物的血条
实际场景中,血条要一直跟着怪物跑,因此我们需要用World Space模式,每个怪物预制体中增加一个血条坐标,然后将血条的UI位置实时更新。
玩家的血条
这个就是用Screen Space,常规的设置都是用这种模式。
Canvas Group
可以控制UI的是否交互,阻挡射线,以及阿尔法值更改。
ScriptableObject
用来管理数据,角色上挂有很多组件,ScriptableObject专门用来处理数据相关。
这个数据可以序列化转换为string,用来切换场景的时候临时存储。
相关文章:
最新两年工作经验总结
最新两年工作经验总结 前言URP的使用1:如何开启URP1、老项目升级为URP2、创建新项目时选择URP创建 2:URP阴影的设置 PolyBrush的使用(地图编辑插件)制作山峰or低谷边缘柔化雨刷上色制造场景中的物体贴图地形创建容易踩坑的点ProBu…...
MATLAB——线性神经网络预测程序
有导师学习神经网络的分类-鸢尾花种类识别 学习目标: 线性神经网络收敛速度和精度比前一篇博客的感知器神经网络要高, 主要应用在函数逼近,信号预测,模式识别,系统辨识方面 clear all; close all; P[1.1 2.2 3.1 4.1]…...
面试之快速学习STL-迭代适配器
先放一张大图 参考:http://c.biancheng.net/view/7255.html 1. 反向迭代器 例子: std::list<int> values{1,2,3,4,5};auto start_it values.rbegin();const auto end_it values.rend();//start_it end_it std::reverse_iterator<std::lis…...
【Linux】【驱动】杂项设备驱动
【Linux】【驱动】杂项设备驱动 Linux三大设备驱动1. 我们这节课要讲的杂项设备驱动是属于我们这三大设备驱动里面的哪个呢?2.杂项设备除了比字符设备代码简单,还有别的区别吗?3.主设备号和次设备号是什么? 挂载驱动 杂项设备驱动是字符设备驱动的一种࿰…...
【HCIP】10.路由策略
📎13 路由策略与路由控制.pptx 通过修改路由的属性,影响了路由的生成及选路,最终影响了转发流量的路径;控制平面。 ACL IP prefix Filter-Policy Router-Policy 笔记...
【腾讯云Cloud Studio实战训练营】使用Cloud Studio社区版快速构建React完成点餐H5页面还原
陈老老老板🦸 👨💻本文专栏:生活(主要讲一下自己生活相关的内容) 👨💻本文简述:生活就像海洋,只有意志坚强的人,才能到达彼岸。 👨💻上一篇…...
测试开发工程必备技能之一:Mock的使用
1. 背景 在实际产品开发过程中,某个服务或前端依赖一个服务接口,该接口可能依赖多个底层服务或模块,或第三方接口,比如说服务 A 依赖服务B,服务B又依赖服务 C 这种依赖的问题会导致原本的需求目的是要验证服务A&…...
Qbytearray:从十六进制字符串转字节一些注意事项
1、从十六进制字符串转字节后,按字节使用时 QByteArray data QByteArray::fromHex("cc94");printf("%x %x\n",data.at(0),data.at(0)&0xff);//若超过127,会不一样printf("%d %d\n",data.at(0),data.at(0)&0xff);…...
【Docker】Docker的使用案例以及未来发展、Docker Hub 服务、环境安全的详细讲解
前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介:热…...
Redis有哪几种内存淘汰策略?
推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 资源分享 「java、python面试题」来自UC网盘app分享,打开手机app,额外获得1T空间 https://dr…...
操作系统练习:在Linux上创建进程,及查看进程状态
说明 进程在执行过程中可以创建多个新的进程。创建进程称为“父进程”,新的进程称为“子进程”。每个新的进程可以再创建其他进程,从而形成进程树。 每个进程都有一个唯一的进程标识符(process identifier,pid)。在L…...
Java虚拟机(JVM):垃圾收集算法
目录 一、分代收集理论 二、标记-清除算法 三、标记-复制算法 四、标记-整理算法 一、分代收集理论 分代收集理论建立在两个分代假说之上: 1、弱分代假说:绝大多数对象都是朝生夕灭的。 2、强分代假说:熬过越多次垃圾收集过程的对象就…...
【爬虫】Requests库的使用
这个库比我们上次说的 urllib 可是要牛逼一丢丢的。通过它我们可以用更少的代码,模拟浏览器操作。 不多说,直接上手代码。 requests 常见用法 mport requests# get请求网站 r requests.get(https://www.baidu.com/) # 获取服务器响应文本内容 r.text …...
了解生成对抗网络 (GAN)
一、介绍 Yann LeCun将其描述为“过去10年来机器学习中最有趣的想法”。当然,来自深度学习领域如此杰出的研究人员的赞美总是对我们谈论的主题的一个很好的广告!事实上,生成对抗网络(简称GAN)自2014年由Ian J. Goodfel…...
opencv-人脸关键点定位
#导入工具包 from collections import OrderedDict import numpy as np import argparse import dlib import cv2#https://ibug.doc.ic.ac.uk/resources/facial-point-annotations/ #http://dlib.net/files/# 参数 ap argparse.ArgumentParser() ap.add_argument("-p&quo…...
言语理解与表达 郭熙(一)
40题 35min 逻辑填空 (20题) 题型:实词填空;成语填空;混搭填空 解题思路 词义辨析:词义侧重;固定搭配;程度较重;感情色彩 语境分析: 关联关系ÿ…...
【stable-diffusion使用扩展+插件和模型资源(上】
文章目录 前言一、插件推荐1.qrcode-monster2.sd-webui-openpose-editor3.sd-webui-depth-lib4.roop(换脸插件)5.sd-webui-qrcode-toolkit(艺术二维码)5.光源控制6.二次元转真人7.动态视频转场(loopback-waveÿ…...
面试之快速学习STL-无序关联式容器
和关联式容器一样,无序容器也使用键值对(pair 类型)的方式存储数据。不过,本教程将二者分开进行讲解,因为它们有本质上的不同: 关联式容器的底层实现采用的树存储结构,更确切的说是红黑树结构&a…...
C++线程库
C线程库是C11新增的重要的技术之一,接下来来简单学习一下吧! thread类常用接口 函数名功能thread()构造一个线程对象,没有关联任何线程函数,即没有启动任何线程。thread(fn, args1, args2, ...)构造一个线程对象,并…...
一文看懂群晖 NAS 安装 Mysql 远程访问连接
文章目录 1. 安装Mysql2. 安装phpMyAdmin3. 修改User 表4. 本地测试连接5. 安装cpolar6. 配置公网访问地址7. 固定连接公网地址 群晖安装MySQL具有高效、安全、可靠、灵活等优势,可以为用户提供一个优秀的数据管理和分析环境。同时具有良好的硬件性能和稳定性&#…...
永久设置pip指定国内镜像源(windows内)
1.首先列出国内四个镜像源网站: 一、清华源 https://pypi.tuna.tsinghua.edu.cn/simple/ 二、阿里源 https://mirrors.aliyun.com/pypi/simple 三、中科大源 https://pypi.mirrors.ustc.edu.cn/simple/ 四、豆瓣源 http://pypi.douban.com/simple/ 2.一般下载所需要…...
【SA8295P 源码分析】27 - QNX Ethernet MAC 驱动 之 emac_tx_thread_handler 数据发送线程 源码分析
【SA8295P 源码分析】27 - QNX Ethernet MAC 驱动 之 emac_tx_thread_handler 数据发送线程 源码分析 系列文章汇总见:《【SA8295P 源码分析】00 - 系列文章链接汇总》 本文链接:《【SA8295P 源码分析】27 - QNX Ethernet MAC 驱动 之 emac_tx_thread_handler() 数据发送线程…...
爬虫抓取数据时显示超时,是代理IP质量不行?
很多人在做数据抓取的时候,会遇到显示超时了,然后就没有响应了。这是什么原因的?有的人回答是使用的代理IP质量不行,这种答案,对也不对。 数据抓取时,出现超时的原因时多方面影响的,主要分为目标…...
【管理运筹学】第 5 章 | 整数规划 (2,割平面法及 0-1 变量的特性)
文章目录 引言三、割平面法四、0-1 型整数规划4.1 0-1 变量的特性4.1.1 投资问题4.1.2 约束条件满足个数问题 写在最后 引言 前文我们介绍了整数规划的一种求解方法——分支定界法,可以求解纯整数和混合整数规划问题。现在我们来学习另一种整数规划求解方法——割平…...
Vscode详细安装教程
Vscode官网下载 官网地址:Download Visual Studio Code - Mac, Linux, Windows 通过链接可以直接跳转到下面的页面当中,支持的版本有Windows、Linux、Mac,可以选择适配自己电脑的版本,一般来说应该是Windows x64的。不要直接点W…...
法线矩阵推导
法线矩阵推导 https://zhuanlan.zhihu.com/p/72734738 https://juejin.cn/post/7113952418613690382 https://blog.csdn.net/wangjianxin97?typeblog 1、为什么需要法线矩阵 vec3 normalEyeSpace modelViewMatrix * normal;如果模型矩阵执行了非等比缩放, 顶点的改变会导致法…...
对容器、虚拟机和 Docker 的初学者友好介绍
一、说明 如果你是一个程序员或技术人员,你可能至少听说过Docker:一个有用的工具,用于在“容器”中打包,运输和运行应用程序。很难不这样做,这些天它得到了所有的关注 - 来自开发人员和系统管理员。即使是像谷歌、VMwa…...
linux部署clickhouse(单机)
一、下载安装 1.1、下载地址 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区阿里巴巴开源镜像站,免费提供Linux镜像下载服务,拥有Ubuntu、CentOS、Deepin、MongoDB、Apache、Maven、Composer等多种开源软件镜像源,此外还提供域名解析DNS、…...
vue组件注册
组件注册分为全局注册和局部注册 全局注册 在 main.js 或者入口文件中 import { createApp } from vue; import MyComponent from ./components/MyComponent.vue;const app createApp();app.component(my-component, MyComponent);app.mount(#app); 我们首先通过createApp…...
day20 飞机大战射击游戏
有飞行物类 飞行 爆炸 的连环画, 飞行的背景图 , 子弹图, 还有游戏开始 暂停 结束 的画面图。 设计一个飞机大战的小游戏, 玩家用鼠标操作hero飞行机, 射出子弹杀死敌机,小蜜蜂。 敌机可以获得分数&…...
为歌手做的个人网站/网站推广和宣传的方法
http://wengyuli.blog.51cto.com/44136/583891 完善Demo 在上一篇 WCF服务重构实录(上)中,我们建立了项目,这里再建立一个简单的客户端调用WCF服务来测试,很简单 这样一个完成的Demo就完成了,那么怎么将…...
wordpress禁止复制插件/关键词搜索排名查询
使用JAVA实现签名验证示例程序 程序来源于CSDN资源,我测试了一下,现在拿出来分享。 import java.security.*; public class SignatureExample { public static void main(String[] args){ try{ byte[] info "待签名信息".getBytes()…...
怎样做投资与理财网站/自己如何制作一个网站
首先要将bit文件转为MCS文件,然后下载MCS文件到ROM中。在ISE或EDK下生成BIT文件,可通过IMPACT对FPGA进行配制, bit文件是配制到FPGA内部RAM的,掉电就没有了, 如果需要固化到片外FLASH里面(下载到FLash或EEP…...
linux wordpress伪静态/资源搜索
说明:该文章主要是以媳妇的视角 讲述 媳妇与婆婆 好好相处的一些原则。 不和公公婆婆争老公,也不要经常问:我和你妈谁在你心里更重要?我和你妈掉水里了你先救谁? 我和你妈都生气了你先哄谁?。。。等等一系列…...
怎么免费给网站做收录/长沙seo网络推广
互联网流量监测机构comScore日前在题为《2010年数字趋势》(2010 digital trends)的报告中指出,Facebook、Twitter等创新性的短信平台,以及移动通讯继续在统治着网络用户的时间,电子邮件的使用用户数量正在不断的减少。…...
云南网站推广/谷歌推广公司哪家好
展开全部比如:现在是2004-03-26 13:31:40过去是:2004-01-02 11:30:24我现在要获得两个e5a48de588b662616964757a686964616f31333365633962日期差,差的形式为:XX天XX小时XX分XX秒方法…...