Unity中常用方法

chatgpt/2023/10/3 18:08:22

1.基础

//初始化引入
[RequireComponent(typeof(BoxCollider2D))]
[RequireComponent(typeof(Rigidbody2D))]//游戏帧率设置  60帧Application.targetFrameRate = 60;//获取物体对象
//获取到当前物体(根据名称,也可以根据路径)GameObject go= GameObject.Find("红旗");GameObject go = this.transform.GetChild(0).gameObject; //根据下标GameObject go= Resources.LoadAll<GameObject>("preform/Enemys");//根据目录结构查找Resources目录下面//物体位置世界位置/本地位置Vector3 vector3 = gameObject.transform.position;Vector3 vector3 = gameObject.transform.localPosition;//颜色处理  【R,G,B,透明度】
GUI.color = new Color(GUI.color.r, GUI.color.g, GUI.color.b, alpha);//复制物体AudioSource music = this.GetComponent<AudioSource>();Rigidbody2D rb = this.GetComponent<Rigidbody2D>();Translate  tr= this.GetComponent<Translate>();//挂载脚本
gameObject.AddComponent<BulletCol>();//当前鼠标点击
Input.GetMouseButtonDown(0)

2.方法

0.物体赋予初始位置初始欧拉角

guanzi.transform.position = new Vector3(-10f, -2f, -0.15f);         //初始位置
guanzi.transform.localEulerAngles = new Vector3(-10f, -2f, -0.15f); //初始欧拉角

       1.物体移动Translate物体旋转Rotate

//物体移动 Translate(x, y, z, 相对)Self 相对自己,Word相对世界
this.transform.Translate(0, 0, 每秒运行长度, Space.Self);//物体旋转 Rotate(x, y, z, 相对)Self 相对自己,Word相对世界
this.transform.Rotate(0, 速度 * Time.deltaTime, 0, Space.Self);//父物体旋转 Rotate(x, y, z, 相对)Self 相对自己,Word相对世界
this.transform.parent.Rotate(0, 速度 * Time.deltaTime, 0, Space.Self);

      2.朝向物体移动LookAt

 //让当前物体看向红旗 把物体z轴转向目标LookAt(transform);
this.transform.LookAt(GameObject.transform);

     3.播放音乐

    public AudioClip[] acp;public void playMusic(){int index = Random.Range(0, acp.Length);AudioSource ast = GetComponent<AudioSource>();ast.clip = this.acp[index];ast.Play();ast.Stop();}

4.赋予初始速度(刚体)Rigidbody2D

Rigidbody2D rb = this.GetComponent<Rigidbody2D>(); 
rb.velocity = new Vector2(x,y);//x/y 为多少速度为多少 

5.本地坐标转世界坐标

Vector3 targetPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

6.动画处理传送门

7.摄像机跟随玩家 

8.事件处理

9.场景处理 

//场景切换
SceneManager.LoadScene("game");

 3.函数

消息函数

//发送消息调用  【方法名字,方法参数,参数3】
//SendMessageOptions.DontRequireReceiver 找不到方法不回报错
//SendMessageOptions.RequireReceiver     找不到方法会报错
gameobject.SendMessage("Damage", Random.Range(5, 21),SendMessageOptions.DontRequireReceiver);

定时函数

InvokeRepeating("射击", 1, 2); // 等待1秒后每2秒吊用一次射击的方法。
IsInvoking("射击")     判断该函数是否被调用 如果没有在调用
CancelInvoke("射击")   取消被调用

预制体

//实例化一个guanzi位置在gzWzzb.transform相对于(true)本地坐标/false世界坐标
//实例化预制体, Instantiate(预制体,位置,true/false) true是本地坐标false世界坐标guanzi = Instantiate(guanzi, gzWzzb.transform, true);guanzi.transform.rotation = gzWzzb.transform.rotation;//设置旋转位置//物体销毁  物体3秒后销毁Destroy(guanzi, 3f);

图像轮动

//_MainTex写死,Vector(x,y);  Time.time/5沿着X轴5秒轮动一次this.GetComponent<Renderer>().material.SetTextureOffset("_MainTex",new Vector2(Time.time/5,0));

 物体移动

 Vector3 ui;
//物体的移动【移动的transform,移动的位置,移动的角度,移动后输出的位置】
RectTransformUtility.ScreenPointToWorldPointInRectangle(rectTransform, eventData.position, eventData.enterEventCamera, out ui);

时间函数

Time.time从游戏开始后所运行的时间
Time.deltaTime表示从上一帧到当前帧时间
Time.frameCount时间的缩放,Time.timeScale为1是默认值,为0可用于游戏的暂停,为2可用于游戏的快进

4.生命周期

void Awake(){} //最早时调用,一般可以在此实现单例模式(未激活的组件也会被调用)
void OnEnable(){} //组件激活后调用,在awake()后调用一次
void Start(){}  //在update()之前调用一次,在onEnable之后调用,可以再次设置一些初始值。(未激活的组件不会被调用)
void FixedUpdate(){}//固定频率调用方法,每次调用与上次调用的时间间隔相同
void Update(){}     //帧率调用法,每帧调用一次,每次调用与上一次调用的时间间隔不相同
void LateUpdate(){} //在udate()每调用完一次后,紧跟着调用一次
void OnDisable(){}  //与onEnable相反,组件未激活时调用
void OnDestroy(){}  //被销毁后调用一次

5.鼠标事件

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

SQL Server通过指令备份数据库和恢复数据库

数据库备份&#xff1a; backup database [MyTestDB]to diskD:\MyTestDB_20200101.bakwith format,init,stats1,compression 数据库恢复&#xff1a; restore database MyTestDB_newfrom diskD:\MyTestDB_20200101.bakwith move MyTestDB to D:\MyTestDB_new.mdf,move MyTest…

使用ansible playbook编写lnmp架构

使用ansible playbook编写lnmp架构 - name: nginx playgather_facts: falsehosts: lnmpremote_user: roottasks: - name: stop firewalldservice: namefirewalld statestopped- name: syslinuxcommand: /usr/sbin/setenforce 0ignore_errors: true- name: nginx.repocopy: src/…

hadoop部署配置

端口名称 Hadoop2.x Hadoop3.x NameNode内部通信端口 8020 / 9000 8020 / 9000/9820 NameNode HTTP UI 50070 9870 MapReduce查看执行任务端口 8088 8088 历史服务器通信端口 19888 19888 端口名称Hadoop2.xHadoop3.xNameNode内部通信端口8020 / 90008020 / 9000/9820NameNode…

2022年全国职业院校技能大赛(高职组)“软件测试”赛项单元测试参考答案

题目2&#xff1a;根据输入的年份和月份判断月份的天数。若月份不在有效范围之内&#xff0c;应提示&#xff1a;“月份输入不正确。”。月份不为2月&#xff0c;根据输入月份输出对应的月份天数。月份为2月&#xff0c;根据年份判断如为普通闰年&#xff0c;输出2月份正确天数…

spring websocket 调用受权限保护的方法失败

版本 spring-security 5.6.10 spring-websocket 5.3.27 现象 通过AbstractWebSocketHandler实现websocket端点处理器 调用使用PreAuthorize注解的方法报错&#xff0c;无法在SecurityContext中找到认证信息 org.springframework.security.authentication.AuthenticationCred…

区块链:可验证随机函数

本篇主要介绍可验证随机函数的定义及其在区块链上的作用。 1 可验证随机函数 1.1 定义 可验证随机函数(Verifiable Random Function&#xff0c;VRF)本质上还是一类具有验证功能的伪随机函数。对于一个特定的输入 m m m以及输入者的私钥 S K SK SK&#xff0c;VRF会输出一个随…

(2)Gymnasium--CartPole的测试

1、主要参考 &#xff08;1&#xff09; CartPole 强化学习详解1 - DQN_Oxalate-c的博客-CSDN博客 &#xff08;2&#xff09;官方文档&#xff0c;推荐&#xff01;&#xff01;&#xff01;&#xff01; Cart Pole - Gymnasium Documentation 2、相关说明 2.1 动作空间 …

深入浅出指南:Netty开发【NIO核心组件】

目录 ​Netty开发【NIO核心组件】 1.NIO基础概念 2.NIO核心组件 2.1.Channel&&Buffer简介 2.2.Selector 服务器的多线程版本 服务器的线程池版本 服务器的selector版本 2.3.Buffer 0.ByteBuffer的正确使用流程 1.ByteBuffer类型简介 2.ByteBuffer核心属性说…
推荐文章