SIKI学院事件函数,Time,游戏物体笔记

本文详细介绍Unity游戏开发所需的基础知识,包括Unity API文档的使用、事件函数的执行顺序、时间管理、游戏物体操作以及组件管理等核心内容。文章还介绍了如何通过代码实例化游戏物体、添加组件、控制游戏物体的状态,并探讨了消息传递机制。
一 学习需要的基础:

1需要一定的unity基础。
2不要死记硬背,多练常用的,加深印象。
3学习目标:巩固unity知识

二 如何查看unity的API文档:

Help里Scripting Reference是API文档(经常用到):介绍各种类
Unity Manual是Manual手册:教程式手册,具备各个功能,例如Audio,UI,Animation,Navigation,Unity2D等等

三 事件函数:

如何查看所有的事件函数:
Manual-Scripting-Scripting Overview-Execution Order of Event Functions
在这里插入图片描述
在这里插入图片描述
1创建一个新场景,命名为MainScene
2创建一个游戏物体,新建脚本API01,用来测试事件方法
Start函数只执行一次,Update可以重复执行
Reset函数:初始化

四 事件函数的执行和先后顺序:

FixedUpdate:每秒调用固定次数
OnTinggerXXX和OnCollisionXXX:触发碰撞器
OnMouseXXX:输入事件
新建API09OnMouseEventFunction脚本在这里插入图片描述

OnMouseDown:鼠标按下会执行一次OnMouseUp:鼠标抬起会执行一次
OnMouseDrag:鼠标拖拽会执行OnMouseEnter:移上会执行一次
OnMouseExit:移出会执行一次OnMouseOver:每帧都会执行一次

前三个和鼠标抬不抬起无关 后三个和鼠标抬起拖拽有关
OnMouseUpAsButton:同一个物体才会触发
OnDestory:销毁

五 Time :Scripting API里搜素Time

在这里插入图片描述
captureFramerate:设置帧的速率,可以屏幕截图
deltaTime:代表当前帧所占用的时间,和实际的组件有关系
在这里插入图片描述
在这里插入图片描述
fixeddeltaTime:固定的每一帧所占用的时间。可以通过Edit-Project Settings-Time-Fixed Timestep查看
smoothdeltaTime:平缓的变化,和deltaTime有关系
realtimeSinceStartup:游戏从开始到现在所占用的时间,暂停的时候会一直增加,不受暂停的影响。
timeSinceLeveLoad:以一个场景到另一个场景为单位
fixedTime/Time:以游戏从开始和结束为单位
frameCount:从游戏到暂停运行的帧数
timeScale:对所有的DeltaTime可以实现加速,减速和暂停播放
例如Time.timeScale=3f;加速
Edit-Project Settings-Time
新建API02Time脚本,并运行
在这里插入图片描述
在这里插入图片描述
realTimeSinceStartup的使用
测试性能快慢:例如乘法和加法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行结果可得乘法比加法性能慢

六 游戏物体

1)创建游戏物体的三种方法:
Instantiate 实例化特效,游戏角色等等
CreatePrimitive 创建一些基本图形,例如Plane Cube等等
创建脚本API03,编辑代码并运行
在这里插入图片描述
通过代码给游戏物体添加组件
在这里插入图片描述
禁用和启用一个游戏物体
activeSelf:表示自身是否处于激活状态
如果父物体被禁用,子物体如果没有被禁用,则activeSelf为true
activeInHierarchy(常用):表示某个物体是否处于激活状态
父物体如果被禁用,子物体也无法运行
Tag(标签):区分场景中的某个游戏物体
在这里插入图片描述
2)GameObject,Component,Object
关系:
在这里插入图片描述
在这里插入图片描述
1>UnityEngine下Object拥有的静态方法:
Destroy销毁 既可以销毁组件,也可以销毁游戏物体。还可以设置时间。
Destroylmmediate立即销毁(不建议用)
DontDestroyOnLoad 切换场景时也会存在,用来设置共享的游戏物体
FindObjectOfType根据组件类型查找组件,只找第一个
FindObjectsOfType 所有的
Instantiate实例化
2>GameObject独有的静态方法:
CreatePremitive
Find:根据名字查找游戏物体,比较耗费性能,尽量不要在Update里查找
FindGameObjectsWithTag:根据标签查找场景中的所有的带有这种标签的游戏物体
FindWithTag:根据标签查找场景中的第一个的带有这种标签的游戏物体
3>GameObject的公共方法:
AddComponent SetActivve CompareTag
Message:
BroadcasMessage广播消息,可以减少游戏物体之间的耦合性
新建API04Message
在这里插入图片描述
在这里插入图片描述
SendMessage 会针对某一个物体身上的所有的脚本方法会被调用
在这里插入图片描述
SendMessageUpwards:针对当前物体以及其所有的父物体
在这里插入图片描述
GetComponent 得到游戏物体的第一个组件
GetComponens 得到游戏物体的所有组件
GetComponentinChildren 当前的游戏物体以及子物体的第一个组件
GetComponentsinChildren 当前的游戏物体以及子物体的所有组件
GetComponeninParent 当前的游戏物体以及所有的父物体的第一个组件
GetComponensinParent 当前的游戏物体以及所有的父物体的所有组件
在这里插入图片描述
在这里插入图片描述
4>MonoBehaviour:
在这里插入图片描述
变量:runEditMode-ExecuteInEditMode实现在编辑模式下也可以运行的功能
Invoke调用某个方法 可以设置调用时间(定时器)
InvokeRepeating重复调用某个方法
CancelInvoke取消调用某个方法 只会取消当前脚本的方法
新建API06MonoBehaviour脚本并运行
在这里插入图片描述
注意:Debug可以在任意地方使用,print只能在MonoBehaviour下使用,因为其属于MonoBehaviour的静态方法
IsInvoking判断某个方法是否被调用
新建API07Invoke脚本
在这里插入图片描述
在这里插入图片描述

STM32电机库无感代码注释无传感器版本龙贝格观测三电阻双AD采样前馈控制弱磁控制斜坡启动内容概要:本文档为一份关于STM32电机控制的无传感器版本代码注释资源,聚焦于龙贝格观测器在永磁同步电机(PMSM)无感控制中的应用。内容涵盖三电阻双通道AD采样技术、前馈控制、弱磁控制及斜坡启动等关键控制策略的实现方法,旨在通过详细的代码解析帮助开发者深入理解基于STM32平台的高性能电机控制算法设计与工程实现。文档适用于从事电机控制开发的技术人员,重点解析了无位置传感器控制下的转子初始定位、速度估算与系统稳定性优化等问题。; 适合人群:具备一定嵌入式开发基础,熟悉STM32平台及电机控制原理的工程师或研究人员,尤其适合从事无感FOC开发的中高级技术人员。; 使用场景及目标:①掌握龙贝格观测器在PMSM无感控制中的建模与实现;②理解三电阻采样与双AD同步采集的硬件匹配与软件处理机制;③实现前馈补偿提升动态响应、弱磁扩速控制策略以及平稳斜坡启动过程;④为实际项目中调试和优化无感FOC系统提供代码参考和技术支持; 阅读建议:建议结合STM32电机控制硬件平台进行代码对照阅读与实验验证,重点关注观测器设计、电流采样校准、PI参数整定及各控制模块之间的协同逻辑,建议配合示波器进行信号观测以加深对控制时序与性能表现的理解。
### 关于Siki学院的Cocos教程 在寻找关于Siki学院提供的Cocos教程时,可以确认的是,在Bilibili平台上存在由siki老师讲解并完成的三个基于Cocos的小游戏项目[^2]。这些项目的版本范围涵盖了Cocos 7.2至7.4期间的技术特性与开发方法。 虽然上述资料并非专门针对最新版Cocos Creator(例如3.8版本),但对于理解基础概念以及实践小型游戏项目的构建仍然具有很高的价值。通过跟随这几位老师的教学视频,能够获得有关如何运用Cocos引擎创建简单游戏的经验和技术指导。 对于希望深入学习Cocos Creator的同学来说,除了关注特定版本的功能外,掌握基本的游戏开发流程同样重要。比如了解如何设置场景、编写脚本控制游戏角色行为、处理用户输入等方面的知识点。而siki老师的教程正好提供了这样的入门途径。 此外,值得注意的是尽管siki老师可能对VSCode的一些高级功能不够熟悉,但这并不影响其作为初学者指南的有效性和实用性。毕竟核心在于教授学生怎样利用Cocos工具集来实现自己的创意想法。 ```python # 示例:简单的Cocos Creator初始化代码片段 import cocos class HelloWorld(cocos.layer.Layer): def __init__(self): super(HelloWorld, self).__init__() label = cocos.text.Label('Hello World', font_name='Times New Roman', font_size=32, anchor_x='center', anchor_y='center') label.position = (320, 240) self.add(label) if __name__ == "__main__": import pyglet from cocos.director import director director.init(width=640, height=480) hello_layer = HelloWorld() main_scene = cocos.scene.Scene(hello_layer) director.run(main_scene) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值