【unity小技巧】常用的方法属性和技巧汇总

news2024/12/22 18:05:49

学习目标:

最近学习过程经常遇到一些好的方法属性和技巧,但是很容易忘记,单内容都比较少,又不至于开一篇文章单独讲解各个用法,特此单独写一篇做汇总,好记性不如烂笔头,后面收获一些新的知识我还会持续更新这篇文章的


移动:

# 让游戏对象在两个点之间按照固定速度进行平滑的移动
# 参数1表示当前位置,参数2表示目标位置,参数3表示单次调用时最大移动距离
transform.position = Vector2.MoveTowards(transform.position, targetPos, moveSpeed * Time.deltaTime);
# 使游戏对象平滑地移动到一个新的位置
# rb.position:获取刚体当前的位置
# movement:表示游戏对象的移动方向,是一个Vector3类型的变量
# 这个方法必须在FixedUpdate中调用,必须带有刚体,以保证物理引擎的正确协同工作
rb.MovePosition(rb.position + movement * moveSpeed * Time.deltaTime);
# 代码改变了刚体的速度(velocity)属性
# 这个方法必须在FixedUpdate中调用,必须带有刚体,以保证物理引擎的正确协同工作
rb.velocity = new Vector3(moveH, moveV, moveZ);

力:

# 给刚体施加一个向上的力
//rb.AddForce(new Vector2(0, jumpForce));
rb.AddForce(Vector2.up * jumpForce);
 
rb.AddForce(Vector2.up * jumpForce, ForceMode.Force);

常见的ForceMode包括:

ForceMode.Force:添加一个可持续力到刚体,使用它的质量(默认)
ForceMode.Acceleration:添加一个可持续加速度到刚体,忽略它的质量
ForceMode.Impulse:添加一个瞬间的冲击力到刚体,使用它的质量
ForceMode.VelocityChange:添加一个瞬间的加速度给刚体,忽略它的质量

翻转:

# 缺点:如果角色带有子物体,比如武器,不会跟着一起翻转
sp = GetComponent<SpriteRenderer>();
sp.flipX = true;

在这里插入图片描述

transform.localScale = new Vector3(-1, 1, 1);

在这里插入图片描述

transform.eulerAngles = new Vector3(0, 180, 0);

在这里插入图片描述

单例模式

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
	public static GameManager instance;
	private void Awake();
	{
		if(instance =null)
		{
			instance = this;
		}else{
			if(instance != this){
				Destroy(gameobject);
			}
		}
		DontDestroyOnLoad(gameobject);
	}
}

在Awake方法总,如果GameGameManager为空,那么我们就将这个脚本通过关键字【this】赋值给变量instance
在else语句中,如果instance不为空,那么instance并非当前的脚本,那么就需要销毁当前的游戏对象,来保证脚本的唯一性
最后别忘了在方法的最后,通过DontDestroyOnLoad方法,保证即使多个场景之间的互相切换也会保留这个脚本,保证在【不同场景】中的唯一性

取绝对值

Mathf.Abs(-10); 	//输出10

检测鼠标

UI事件系统的接口

public void OnPointerEnter(PointerEventData eventData){
	// 鼠标移入时执行的操作
}

public void OnPointerExit(PointerEventData eventData){
	// 鼠标移出时执行的操作
}

如果是物体,并非UI就需要使用鼠标事件来实现了,注意物体必须要有Collider组件

public void OnMouseEnter(PointerEventData eventData){
	// 鼠标移入时执行的操作
}

public void OnMouseExit(PointerEventData eventData){
	// 鼠标移出时执行的操作
}

旋转

# 每帧绕X轴旋转1度
transform.Rotate(Vector3.right, 1f);

# 每帧绕z轴绕指定点旋转1度
transform.RotateAround(centerPosition, Vector3.forward, 1f);

# 每帧绕全局坐标系下的Y轴旋转1度
transform.rotation *= Quaternion.Euler(0f, 1f, 0f);

# 每帧绕本地坐标系下的Y轴旋转1度
transform.rotation *= Quaternion.AngleAxis(1f, Vector3.up);

# 每帧将物体从“fromDirection”的方向旋转到“toDirection”的方向
transform.rotation = Quaternion.FromToRotation(fromDirection, toDirection);

取整

# 向上取整
Mathf.CeilToInt(1.1f); //输出2

# 向下取整
Mathf.FloorToInt(1.1f); //输出1

# 四舍五入
Mathf.Round(3.1415926f); //输出3

# 保留两位小数
float num = 3.149f;
float result = Math.Floor(num * 100f) / 100f; //输出3.14

# 四舍五入保留两位小数
float res = (float)Math.Round(num, 2); //输出3.15
string res = num.ToString("F2");   //输出3.15
string res = num.ToString("0.00"); //输出3.15

# 不够补0
float num = 3.1f;
string numStr = num.ToString("0.00"); //输出3.10

窗口显示类

没有继承MonoBehaviour的脚本默认在窗口是不可编辑的,需要增加System.Serializable关键字
在这里插入图片描述

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

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

相关文章

基于kubesphere的k8s环境部署单点版本的rook-ceph

文章目录 前言一、rook-ceph是什么&#xff1f;二、开始部署1.环境准备2.软件包准备3.下载rook-ceph文件4. 部署operator5.创建ceph集群6.创建工具容器&#xff0c;检查集群状态7.准备dashboard的nodeport端口映射服务8.准备prometheus的metric端口映射服务 总结 前言 基于kub…

第16章:InnoDB数据存储结构

一、数据库的存储结构&#xff1a;页 1.磁盘与内存的交互基本单位:页 InnoDB将表中数据划分多个页来存储&#xff0c;InnoDB中页的大小默认是16KB 在数据库中&#xff0c;不论读一行&#xff0c;还是读多行&#xff0c;都是将这些行所在的页从磁盘加载到内存。数据库管理存储…

自动化测试,B、C接口要将A接口返回的参数作为入参,有哪些方法?

在进行自动化测试时&#xff0c;如果需要将A接口返回的参数作为B、C接口的入参&#xff0c;可以通过以下几种方法实现&#xff1a; 如果你想学习自动化测试&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站百万播放全网第一的自动化测试教程&#xff0c;同…

PyTorch 深度学习 || PyTorch 编程基础

PyTorch 编程基础 文章目录 PyTorch 编程基础1. backword 求梯度2. 常用的激活函数2.1 Sigmoid 函数2.2 ReLu 激活函数2.3 Leakly ReLu 激活函数 2. 常用损失函数2.1 均方误差损失函数2.2 L1范数误差损失函数2.3 交叉熵损失函数 3. 优化器 1. backword 求梯度 import torchw …

(十)服务器K8S集群部署SpringBoot项目实战

1.准备springboot项目 可以在 https://start.spring.io/网站准备一个项目&#xff0c;这里作为k8s的学习所以springboot项目中准备一个简单的访问接口即可。 2.服务器环境准备 安装Jdk 1.更新系统软件包&#xff1a; sudo yum update2.安装 OpenJDK 11&#xff1a; sudo…

陶瓷板视觉检测系统和运动控制有什么联系?

陶瓷板视觉检测系统是一种利用现代计算机视觉技术对陶瓷板进行缺陷检测的设备&#xff0c;而运动控制则是一种控制运动的技术&#xff0c;两者之间存在着密切的联系。下面我们将详细介绍陶瓷板视觉检测系统和运动控制之间的联系。 一、陶瓷板视觉检测系统 陶瓷板视觉检测系统…

Redis面试核心技术点和缓存相关问题

目录 Redis的数据结构和原理 Redis持久化&#xff1a;RDB和AOF Redis的集群设计 缓存雪崩、击穿、穿透 高并发场景下缓存和数据库更新策略 Redis的大key和热key和大value 本地缓存 磁盘IO和网络开销 相比于 请求内存IO 要高上千倍&#xff0c;如果某个数据从数据库磁盘读…

第17章:存储引擎

一、查看存储引擎 1.什么是存储引擎 MySQL的存储引擎就是表的类型 2.查看mysql存储引擎 show engines; 二、设置系统默认的存储引擎 1.查看默认的存储引擎 select default_storage_engine; 2.修改默认存储引擎 set default_storage_engineMyISAM; 三、设置表的存储引擎 …

微信小程序开发之云函数本地调试

环境 微信开发者工具 Stable 1.06.2303220云开发控制台 v1.5.47 简介 微信云开发提供了云函数本地调试功能&#xff0c;在本地提供了一套与线上一致的 Node.js 云函数运行环境&#xff0c;让开发者可以在本地对云函数调试&#xff1a; 在本地调试时&#xff0c;可以设置断点…

【MD5知识详解】【面试知识】

MD5概述&#xff1a; MD5消息摘要算法&#xff0c;属Hash算法一类。MD5算法对输入任意长度的消息进行运行&#xff0c;产生一个128位的消息摘要(32位的数字字母混合码)。 MD5主要特点: 不可逆&#xff0c;相同数据的MD5值肯定一样&#xff0c;不同数据的MD5值不一样 (一个MD5理…

微信小程序nodejs+vue个人身体健康管理系统56b65

开发语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode 。配置文件 (自动编号、配置参数值、配置参数名称)&#xff1b; 论坛交流 (自动编号、用户id、状态、父节点id、帖子标题、用户名…

ndoejs基于Vue.js二手书交易网站系统x3oh4

开发语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode 本毕业设计的内容是设计并且实现一个基于vue框架的二手书交易系统。它是在Windows下&#xff0c;以MYSQL为数据库开发平台&#xf…

chatgpt赋能python:Python取消warning指南:如何避免和处理警告

Python取消warning指南&#xff1a;如何避免和处理警告 如果您已经在使用Python编程&#xff0c;那么您一定会遇到过警告&#xff08;warning&#xff09;这个问题。虽然警告有时可能很有用&#xff0c;但在特定情况下&#xff0c;它们可能会引起程序错误或产生意想不到的行为…

Depcheck 检查前端项目中未使用的依赖包

前言 随着前端项目的迭代&#xff0c;项目中一部分的依赖包可能没被项目所使用的&#xff0c;手动查找这些依赖包耗时又繁琐&#xff0c;有没有根据能够快速的帮助我们识别和清理项目中未使用的依赖包呢&#xff1f; Depcheck 简介 Depcheck 是一款用于分析项目中依赖关系的…

windows下的SVN客户端访问ubuntu下的SVN服务器

目录 第一部分 windows创建本地版本库、连接ubuntu的SVN服务器 步骤0&#xff1a; 步骤一&#xff1a;创建windows本地版本库 步骤二&#xff1a;checkout检测 步骤三&#xff1a;输入之前配置的用户名和密码 第二部分 windows上传文件至SVN服务器 步骤一&#xff1a;添加…

Python数据攻略-DataFrame的创建与基础特性

大家好&#xff0c;我是Mr数据杨&#xff0c;今天我带来的是一本既实用又有趣的Python教程笔记&#xff0c;主角是Pandas DataFrame。它就像《三国演义》中的诸葛亮&#xff0c;机智、实用&#xff0c;可以帮助我们轻松处理各种数据问题。 我们来看如何创建诸葛亮——这个Data…

实现UDP通信(socket接口函数扩展)

一、write/read到send/recv 函数原型&#xff1a; ussize_t send(int sockfd, const void *buf, size_t len, int flags);//发送 ussize_t recv(int sockfd, void *buf, size_t len, int flags);//接收 前三个参数同read/write一样&#xff1b; ussize_t read(int fd, voi…

2023CCPC河南省赛 VP记录

感觉现在的xcpc&#xff0c;风格越来越像CF&#xff0c;不是很喜欢&#xff0c;还是更喜欢多点算法题的比赛 VP银了&#xff0c;VP银也是银 感觉省赛都是思维题&#xff0c;几乎没有算法题&#xff0c;感觉像打了场大型的CF B题很简单没开出来&#xff0c;一直搞到最后&…

Android crash 流程详解(二):NE

源码基于&#xff1a;Android R 接上一篇博文&#xff1a;《Android crash 流程详解(一)&#xff1a;JE》 0. 前言 在上一篇博文剖析了java layer exception 的处理流程&#xff0c;本文将继续剖析 Android crash 的另一部分&#xff0c;即 native 端的 crash&#xff0c;又称…

【JavaEE】网络编程之UDP套接字

目录 1、网络编程基础 2、UDP数据报套接字编程 2.1.DatagramSocket API&#xff08;方法&#xff09; 2.2、DatagramPacket API&#xff08;方法&#xff09; 2.3、InetSocketAddress API 3、基于UDP socket写一个回显服务器 3.1、服务器端 3.2 、客户端 3.3、完…