记录:Unity脚本的编写

目录

前言

在学习软件构造这门课的时候,对unity和c#进行了 一定程度的学习,包括简单的建立地形,添加对象,添加材质等,前不久刚好学习了如何通过c#脚本对模型进行操控,在此记录一下。

使用的语言是c#,使用的工具是visual studio

添加脚本到unity

首先创建一个c#脚本文件

拖动文件到对应对象的状态栏的"添加组件上"

这样就说明脚本已经被添加到对象上

编写c#脚本

添加完之后就可以对脚本进行编辑

点击脚本旁边的三个点,点击编辑脚本,就会打开vs对脚本进行编辑

一些基础的脚本代码

c# 复制代码
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 update
    void 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 frame
    void 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"来指代,方便后续调用

相关推荐
尤乐娃子26 分钟前
进入大厂(厂子大)实习Day12
前端·笔记·实习
砚凝霜2 小时前
软考网络工程师|第 6 章 密码学、哈希、数字签名、数字证书 PKI 完整备考笔记
笔记·密码学·哈希算法
QAQo7T2 小时前
Python组蓝桥杯备赛超详细知识点总结笔记_排序算法篇
笔记·python·算法·蓝桥杯·排序算法
lion_heart0012 小时前
成功日记Plus 智能记账:共享账本、预算管控、Excel 导出等一次讲清
笔记
在世修行3 小时前
从零打造 C# 工业视觉检测系统(八):Modbus RTU 协议解析与 PLC 剔除控制实战
开发语言·c#
智者知已应修善业5 小时前
【三位数字显示计时定时器设计-同步方式】2025-6-30
驱动开发·经验分享·笔记·硬件架构·硬件工程
影寂ldy5 小时前
SQL 事务(Transaction)完整版学习笔记(含转账案例+存储过程+异常捕获)
笔记·sql·学习
风曦Kisaki7 小时前
# Kubernetes(K8s)笔记Day12 :K8s 七层代理(Ingress 和 Ingress Controller)
linux·笔记·云原生·容器·kubernetes
花落人散处7 小时前
CDiskClean 开发历程——忽略进程_拖拽功能实现参考
c#
雪之下雪乃的代码日记7 小时前
Python快速入门(Java开发者版)
java·开发语言·笔记·python