目录
- 前言
- 添加脚本到unity
- 编写c#脚本
- 查看效果
前言
在学习软件构造这门课的时候,对unity和c#进行了 一定程度的学习,包括简单的建立地形,添加对象,添加材质等,前不久刚好学习了如何通过c#脚本对模型进行操控,在此记录一下。
使用的语言是c#,使用的工具是visual studio
添加脚本到unity
首先创建一个c#脚本文件
拖动文件到对应对象的状态栏的“添加组件上”
这样就说明脚本已经被添加到对象上
编写c#脚本
添加完之后就可以对脚本进行编辑
点击脚本旁边的三个点,点击编辑脚本,就会打开vs对脚本进行编辑
一些基础的脚本代码
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;public class NewBehaviourScript : MonoBehaviour
{//Transform transform;GameObject obj;//GameObject obj1;public float floSpeed = 0;public float floRotate = 0;// Start is called before the first frame updatevoid Start(){obj = GameObject.Find("Sphere");// obj1 = GameObject.Find("Cube");Debug.Log(transform.name); //名字Debug.Log(transform.tag); //标签Debug.Log(transform.position); //位置 Debug.Log(transform.rotation); //角度Debug.Log(transform.eulerAngles); //欧拉角Debug.Log(transform.localEulerAngles); //局部欧拉角Debug.Log(transform.localPosition); //局部位置Debug.Log(transform.localRotation); //局部角度Debug.Log(transform.localScale); //局部缩放Debug.Log(transform.parent); //父物体Debug.Log(transform.childCount); //子物体数量Debug.Log(transform.forward); //前方Debug.Log(transform.up); //上方
//复制对象//GameObject.Instantiate(obj, transform.position, transform.rotation);}// Update is called once per framevoid Update(){//物体移动的第一种方法//transform.position += Vector3.up * floSpeed*Time.deltaTime;//记录每帧运行的时间//物体移动的第二种方法transform.Translate(Vector3.up * floSpeed * Time.deltaTime);//物体旋转transform.Rotate(Vector3.up * floRotate * Time.deltaTime);//旋转轴//绕。。。物体旋转transform.RotateAround(obj.transform.position, Vector3.up ,floRotate * Time.deltaTime);//盯住看transform.LookAt(Camera.main.transform);//其他常用方法//GameObject.Destroy(obj); //删除对象//Resources.Load();//加载游戏资源//Application.Quit();//退出游戏}
}
因为代码中有同样操作的多种方法,所以对一些代码进行了注释以免造成相互影响的结果
这段代码它定义了一个名为NewBehaviourScript的类,继承自MonoBehaviour。这个类有以下功能:
在Start方法中,它获取了名为Sphere的游戏对象,并打印了自身的一些属性,如名字、标签、位置、角度、欧拉角、局部欧拉角、局部位置、局部角度、局部缩放、父物体、子物体数量、前方和上方。
在Update方法中,它根据floSpeed和floRotate的值,实现了物体的移动和旋转。它还使用transform.RotateAround方法,让自身绕着Sphere对象旋转。最后,它使用transform.LookAt方法,让自身始终面向主摄像机。
在注释中,它还提到了一些其他常用的方法,如GameObject.Instantiate, GameObject.Destroy, Resources.Load和Application.Quit。
查看效果
编写完成保存后,代码就会自动在unity中产生效果
play一下试试效果
可以看到在脚本的控制下,对象模型(小球)发生了移动,当然也可以让它进行旋转或者其他操作,在此就不做演示
值得一提的是,如果想要让对象进行“绕着某一物体进行旋转的操作”就需要,有两个对象,这正是代码中“ Game Object obj”的作用,它通过这行代码“ obj = GameObject.Find(“Sphere”)”找到了对应的对象,并且使用“obj”来指代,方便后续调用