• 笔记_Unity中的C#编程_112-116


    Unity中的C#编程 B站112-116

    .NET dotent简介

    Microsoft新一代多语言的开发平台,用于构建和运行应用程序

    C#

    Microsoft 专为.NET推出的高级语言

    ##Mono

    NOvell公司支持在其他操作系统下开发.NET程序的框架

    Unity借助Mono实现跨平台,核心是.NET Framework 框架


    脚本是附加在游戏物体上用于定义游戏对象行为的指令代码,就是.cs的文本文件,也就是类文件。 附加到游戏物体中,定义游戏对象行为指令的代码。

    Unity支持三种高级编程语言:

    C#,javaScript和Boo Script

    语法结构

    using 命名空间(避免类的重名);
    public class 类名:MonoBehaviour
    {
    void 方法名()
    	{
    	Debug.Log("显示调试信息");
    	print("本质就是Debug.Log方法");
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 文件名与类名必须一致(不一致就会导致编译失败)
    • 写好的脚本必须附加到物品上才执行
    • 添加到游戏物体的脚本类必须从MonoBehaviour类继承

    在Unity中通过菜单设置修改默认的脚本编辑器:(Unity和vs没有连上的话可以修改这个)

    Edit -> Preferences -> External Tools -> External Script Editor

    脚本的生命周期

    就是 Unity 脚本从唤醒到销毁的过程。也叫必然事件,也叫消息。

    如果在编码过程中出现“不一致的行尾提示框”的话,直接点 “是” 就行了。

    //序列化字段  作用:在编辑器中显示私有变量,想让别人看到,又不想让别人修改
    [SerializeField]
    private int a = 100;
    
    //作用:在编辑器中隐藏字段,不希望你在编辑器里修改它,别人能够修改,但是又不想让别人看到他
    [HideInInspector]
    public int b;
    
    //作用:设置范围
    [Range(0,100)]
    public int c;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    不要在脚本里面写构造函数

    • Awake 唤醒: 当物体载入时立即调用一次;常用于在游戏开始前进行初始化,可以判断当满足某种条件执行此脚本 this.enable=true.

    • OnEnable 当可用: 每当脚本对象启用时调用

    • Start 开始:物体载入且脚本对象启用时被调用1次,常用于数据或者游戏逻辑初始化,执行时机晚于Awake

    • FixedUpdate 固定更新:脚本启用后,固定时间被调用,适用于游戏对象做物理操作,例如移动等。

    ↑设置更新频率: Edit -> Project Setting -> Time -> Fixed Timestep值,默认为0.02S

    • OnCollisionXXX碰撞: 当满足碰撞条件时调用。

    • OnTriggerXXX触发:当满足触发条件时调用。

    • Update 更新:脚本启用后,每次渲染场景时调用,频率与设备性能及渲染量有关

    • lateUpdate 延迟更新:在Update函数被调用后,适用于跟随逻辑。

    • 输入事件↓

    • OnMouseEnter 鼠标移入:鼠标移入到当前Collider时调用

    • OnMouseOver 鼠标经过:鼠标经过当前Collider时调用

    • OnMouseExit 鼠标离开:鼠标离开当前Collider时调用

    • OnMouseDown 鼠标按下:鼠标按下当前Collider时调用

    • OnMouseUp 鼠按抬起:鼠标在当前Collider上抬起时调用

    • 场景渲染↓

    • OnBecameVisible 当可见: 当Mesh Renderer 在任何相机 可见时调用

    • OnBecameInvisible 当不可见:当Mesh Renderer 在任何相机上都不可见时调用

    • 结束阶段↓

    • OnDisable 当不可用:对象变为不可用或附属游戏对象非激活状态时此函数被调用

    • OnDestory 当销毁:当脚本销毁或附属的游戏对象被销毁时被调用

    • OnAppliacationQuit 当程序结束:应用程序退出时被调用

        public class Demo01 : MonoBehaviour
        {
        // Start is called before the first frame update
        public int a = 100;
      
            public int A
            {
                get
                {
                    return this.a;
                }
                set
                {
                    this.a = value;
                }
            }
        
            //*************初始阶段***********
        
            //Awake的执行时机:创建游戏对象,立即执行   永远是Awake先执行,Start后执行
            //作用:初始化
            
            private void Awake()
            {
        
               // Debug.Log("Awake--" + Time.time+this.name);
            }
            //Start的执行时机:创建游戏对象,脚本启用之后,才执行
            //作用:初始化
            private void Start()
            {
                Debug.Log("Start--" + Time.time+this.name);
            }
            //*************物理阶段**************
            //FixedUpdate固更新的执行时机:每隔固定时间执行一次。(时间可以修改)
            //适用性:适合对物体做物理操作(移动、旋转。。。。。),不会受到渲染的影响
            private void FixedUpdate()
            {//渲染时间不固定(美珍渲染量不同、机器性能不同)
                Debug.Log(Time.time);
            }
            //Update执行时机:渲染帧执行.执行间隔不固定
            //适用性:处理游戏逻辑
            private void Upadate()
            {
        
            }
      
        }
      
      • 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
  • 相关阅读:
    javascript深浅拷贝
    Rb(redis blaster),一个为 redis 实现 non-replicated 分片的 python 库
    六、线程池的编写与解析 —— TinyWebServer
    object常用的方法
    [ESP] 私有版Rainmaker User Mapping
    JVM垃圾回收算法
    报错!Jupyter notebook 500 : Internal Server Error
    SS-Model【5】:U-Net
    linux修改用户密码脚本
    Java基于SSM框架的教室预约申请管理系统 毕业设计
  • 原文地址:https://blog.csdn.net/weixin_53270267/article/details/126561201