赞
踩
前言
上一篇博文主要围绕Unity Inspector部分,围绕组件,资源文件,父子节点部分做介绍。
链接:https://blog.csdn.net/weixin_43098506/article/details/129274582
本篇博文将主要开始代码编辑部分,首先介绍Unity适配的C#代码编辑器,需要对Java或者C++有基础理解;然后将介绍帧的概念,将在通过脚本文件移动物体部分结束。
下一篇博文将深入到代码中,研究物体的旋转,欧拉角法以及通过Rotate进行旋转;
链接:
正题
推荐使用 Visual Studio,其可以与Unity适配,在输入函数以及名称时会产生联想以方便书写代码。
Windows-Community 版本的下载链接:https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community&channel=Release&version=VS2022&source=VSLandingPage&cid=2030&passive=false
其他用户自行到官方下载Community免费版。
下载后安装,只需要安装Unity游戏部分即可
下载安装完成后打开Unity,在Edit中选择Preference
然后在 External Tools 中选择 Microsoft Visual Studio 2022
如此选择后,构建了Unity与VS2022的桥梁,双击代码会自动使用VS打开并可以产生联想。
注意,可能会出现无联想的情况,需要重新执行Edit中Preference步骤以解决。
如我们想让蘑菇在地板上沿着Z轴平移,请问如何做?
步骤:
首先在Assets中创建Scripts文件夹,用于记录所有代码文件。
然后在Scripts文件夹中新建代码文件 C# Script
创建完成后,双击会自动通过 Visual Studio 打开,注意C#文件命名建议符合“大驼峰”规则。
打开VS后第一步检查文件名称与类名称是否相同,不相同会出现错误。
没有问题我们进入下一步,开始代码编辑。
在 void Start() 中加入代码
Debug.Log("蘑菇的名字为:" + this.gameObject.name);
Debug.Log("蘑菇的位置在:" + this.gameObject.transform.position.ToString("F1"));
保存代码后,返回到Unity中,下一步我们将代码文件赋给蘑菇物体:
执行游戏。单机执行,再次点击 ▶ 取消执行游戏状态。
执行后效果以及打印结果:
发现其输出名称以及位置坐标信息正确。
代码解析:
获取当前指定游戏物体的名称;
this.gameObject.name
获取当前指定游戏物体的位置信息并且保留一位小数;
this.gameObject.transform.position.ToString("F1")
代码 | 含义 |
---|---|
this | 当前脚本组件 |
this.gameObject | 当前物体 |
this.gameObject.name | 当前物体名称 |
this.gameObject.transform | 当前物体下的transform属性 |
this.gameObject.position | 当前物体下的世界坐标 |
this.gameObject.localPosition | 当前物体的本地坐标,或称相对于父物体的坐标 |
物体的位置属性为localPosition,修改物体的localPosition属性以实现物体的移动。localPosition 为包含三个值的向量 Vector3(x,y,z);
this.transform.localPosition = new Vector3(0,0,5);
代码保存后,运行发现蘑菇的位置发生变化。
Frame:游戏帧
FrameRate:帧率,刷新率
FPS:Frames Per Second:每秒更新多少帧
在 Visual Studio 中,代码主要有两个方法,一个是Start,一个是Update。每更新一帧时,都将调用一次Update方法。
与帧相关的基础代码有:
代码 | 含义 |
---|---|
Time.time | 取得当前游戏时间 |
Time.deltaTime | 距上帧的时间差 |
Application.targetFrameRate=60 | 设定近似帧率 |
需要注意的是,帧率是在不断变化的,没有固定值,只能通过上述代码设定近似帧率。为什么帧率是不断变化的???
影响帧率的有很多因素,主要为我们电脑当前执行的所有程序。当我们执行很多程序时,不可避免的处理器繁忙,会导致帧率的变化。
结合上述所有知识,若我们想要让物体匀速运动,该如何办?
上述知识小结:
- Update方法每一帧调用一次;
- 帧率是在不断变化的,没有固定值,只能设定近似帧率;
- 改变物体位置的code以及获取帧时间差的code。
using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; public class MoveToZ : MonoBehaviour { // Start is called before the first frame update float speed = 5; void Start() { } // Update is called once per frame void Update() { float distance = speed * Time.deltaTime; this.transform.Translate(0, 0, distance); } }
------ End ------
上一篇博文主要围绕Unity Inspector部分,围绕组件,资源文件,父子节点部分做介绍。
链接:https://blog.csdn.net/weixin_43098506/article/details/129274582
下一篇博文将深入到代码中,研究物体的旋转,欧拉角法以及通过Rotate进行旋转;
链接:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。