最新两年工作经验总结

最新两年工作经验总结

  • 前言
  • 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,用来切换场景的时候临时存储。

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

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

相关文章

java 工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发 em

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显…

【C++习题集】-- 堆

(用于复习) 目录 树概念及结构 名词概念 二叉树概念及结构 特殊的二叉树 满二叉树 完全二叉树 运算性质 二叉树存储结构 顺序存储 链式存储 堆 - 顺序存储 堆的性质 堆的实现 堆的应用 堆排序 直接建堆法 树概念及结构 概念&#xff1a…

编写Dockerfile制作自己的镜像并推送到私有仓库

说明:我将用到的私有仓库是Harbor,安装教程参考我的这一篇文章: 安装搭建私有仓库Harbor_Word_Smith_的博客-CSDN博客 一、案例1 1、要求 编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私…

【高级IO】- 五种 IO 模型 | 多路转接 - select

目录 IO的基本概念 什么是高效的IO? 五种IO模型 阻塞IO 非阻塞IO 信号驱动IO IO多路转接 异步IO 同步通信VS异步通信(synchronous communication / asynchronous communication) 同步通信VS同步与互斥 阻塞VS非阻塞 其他高级IO …

JavaScript高级

1、JavaScript面向对象 1.1、面向对象介绍 ​ 在 Java 中我们学习过面向对象&#xff0c;核心思想是万物皆对象。在 JavaScript 中同样也有面向对象。思想类似。 1.2、类的定义和使用 结构说明 代码实现 <!DOCTYPE html> <html lang"en"> <head>…

十问华为云 Toolkit:开发插件如何提升云上开发效能

众所周知&#xff0c;桌面集成开发环境&#xff08;IDE&#xff09;已经融入到开发的各个环节&#xff0c;对开发者的重要性和广泛度是不言而喻的&#xff0c;而开发插件更是建立在IDE基础上的功能Buff。 Huawei Cloud ToolKit作为华为云围绕其产品能力向开发者桌面上的延伸&a…

快速实现SAP的移动化和流程优化

热门议题&#xff1a; 1、企业如何快速解决人员移动办公的需求&#xff0c;比如在苹果安卓手机&#xff0c;平板电脑&#xff0c;MAC登录SAP。2、企业如何解决用户经常抱怨的流程复杂&#xff0c;操作繁琐&#xff0c;难以使用等问题 公司介绍&#xff1a; Synactive,Inc. 是…

8. 实现业务功能--用户注册

目录 1. 顺序图 2. 参数要求 3. 接口规范 4. 创建扩展 Mapper.xml 5. 修改 DAO 6. 创建 Service 接口 7. 实现接口 8. 测试接口 9. 实现 Controller 9.1 密码加密处理 10. 实现前端界面 业务实现过程中主要的包和目录及主要功能&#xff1a; model 包&#xff1a;实体对象 d…

vue 弹出框 引入另一个vue页面

为什么要这么做,适用于在一个页面逻辑比较多的时候,可以搞多个页面,防止出错 index页面点击解约按钮,弹出框 进入jieyue.vue 核心代码 <el-buttonsize"mini"type"text"icon"el-icon-edit"v-if"scope.row.delFlag 0"click"j…

探索人工智能 | 模型训练 使用算法和数据对机器学习模型进行参数调整和优化

前言 模型训练是指使用算法和数据对机器学习模型进行参数调整和优化的过程。模型训练一般包含以下步骤&#xff1a;数据收集、数据预处理、模型选择、模型训练、模型评估、超参数调优、模型部署、持续优化。 文章目录 前言数据收集数据预处理模型选择模型训练模型评估超参数调…

websocker无法注入依赖

在公司中准备用websocker统计在线人数&#xff0c;在WebSocketServer使用StringRedisTemplate保存数据到redis中去&#xff0c;但是在保存的时候显示 StringRedisTemplate变量为null 详细问题 2023-08-20 10:37:14.109 ERROR 28240 --- [nio-7125-exec-1] o.a.t.websocket.po…

NAS个人云存储 - 手把手教你搭建Nextcloud个人云盘并实现公网远程访问

文章目录 摘要1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 摘要 Nextcloud,它是ownCloud的一个分支,是一个文件共享服…

LeetCode ——二叉树篇(三)

刷题顺序及思路来源于代码随想录&#xff0c;网站地址&#xff1a;https://programmercarl.com 二叉树的定义及创建见&#xff1a; LeetCode ACM模式——二叉树篇&#xff08;一&#xff09;_要向着光的博客-CSDN博客 目录 116. 填充每个节点的下一个右侧节点指针 117. 填…

Maven介绍_下载_安装_使用_原理

文章目录 1 Maven介绍1.1 Maven的介绍1.2 Maven的作用 2 Maven下载与安装2.1 官网下载2.2 文件目录2.3 环境配置 3 Maven基础概念3.1 仓库分类3.2 依赖坐标3.3 坐标组成 4 Maven配置4.1 本地仓库配置4.2 远程仓库的设置4.3 镜像仓库配置4.4 IDEA配置Maven 5 Maven项目创建5.1 M…

LaWGPT零基础部署win10+anaconda

准备代码&#xff0c;创建环境 # 下载代码 git clone https://github.com/pengxiao-song/LaWGPT cd LaWGPT # 创建环境 conda create -n lawgpt python3.10 -y conda activate lawgpt pip install -r requirements.txt # 启动可视化脚本&#xff08;自动下载预训练模型约15GB…

回归预测 | MATLAB实现BiLSTM双向长短期记忆神经网络多输入多输出预测

回归预测 | MATLAB实现BiLSTM双向长短期记忆神经网络多输入多输出预测 目录 回归预测 | MATLAB实现BiLSTM双向长短期记忆神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现BiLSTM双向长短期记忆神经网络多输入多输出预测&#x…

第二讲:BeanFactory的实现

BeanFactory的实现 1. 环境准备2. 初始化DefaultListableBeanFactory3. 手动注册BeanDefinition4. 手动添加后置处理器5. 获取被依赖注入的Bean对象6. 让所有的单例bean初始化时加载7. 总结 Spring 的发展历史较为悠久&#xff0c;因此很多资料还在讲解它较旧的实现&#xff0c…

时序预测 | MATLAB实现基于CNN-BiLSTM卷积双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于CNN-BiLSTM卷积双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于CNN-BiLSTM卷积双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍…

iTOP-RK3568开发板ubuntu环境下安装Eclipse

eclipse 是使用 Java 语言开发的&#xff0c;一个 Java 应用程序&#xff0c;这意味着 eclipse 只能运行在 Java虚拟机上。倘若没有安装 JDK&#xff08;Java Development Kit&#xff09;&#xff0c;即使在 ubuntu 上安装了 eclipse&#xff0c;也不能运行&#xff0c;所以要…

正则表达式在PHP8中的应用案例-PHP8知识详解

正则表达式在php8中有许多应用案例。以下是一些常见的应用场景&#xff1a;如数据验证、数据提取、数据替换、url路由、文本搜索和过滤等。 1、数据验证 使用正则表达式可以对用户输入的数据进行验证&#xff0c;例如验证邮箱地址、手机号码、密码强度等。 下面是一个用正则表…