• 记录:Unity脚本的编写


    前言

    在学习软件构造这门课的时候,对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 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();//退出游戏
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    因为代码中有同样操作的多种方法,所以对一些代码进行了注释以免造成相互影响的结果
    这段代码它定义了一个名为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”来指代,方便后续调用

  • 相关阅读:
    现在微软 SQL 服务器被黑,带宽遭到破坏
    代码随想录算法训练营完结篇 ★★★
    shell学习笔记
    4. 执行引擎
    CPU架构 -- ARMv7与ARMv8协处理器比较
    2.4 图解CIO工作指南(IT 架构模型) --- 构成IT 架构的技术要素
    ChatGPT:解释Java中 ‘HttpResponse‘ 使用 ‘try-with-resources‘ 的警告和处理 ‘Throwable‘ 打印警告
    机器学习基本概念
    除六价铬工艺
    期末前端web大作业——HTML+CSS+JavaScript仿京东购物商城网页制作(7页)
  • 原文地址:https://blog.csdn.net/m0_72471315/article/details/133464991