SiKi学院 Unity中常用api学习笔记(015-019)

Unity编程:理解MonoBehaviour的Invoke与Coroutine
本文介绍了Unity中的关键Api,如MonoBehaviour的Invoke、InvokeRepeating功能,以及协程的原理和应用,通过实例演示了如何实现颜色渐变动画。

Api 应用程序编程接口

前言

笔记是看siki学院中《Unity中常用api》的学习笔记

课程地址:  http://www.sikiedu.com/my/course/59

强烈推荐大家去看老师的课

MonoBehaviour总览(015 -016)

Unity中文手册(MonoBehaviour):

https://docs.unity.cn/cn/current/ScriptReference/MonoBehaviour.html

Messages类:不能被调用,但可以在子类中重写变成方法。

变量:runInEditMode,允许 MonoBehaviour 的特定实例在编辑模式下运行(仅可在 Editor 中使用)。

     useGUILayout,禁用该属性可跳过 GUI 布局阶段。

公共函数

CancelInvoke取消该 MonoBehaviour 上的所有 Invoke 调用。
Invoke在 time 秒后调用 methodName 方法。
InvokeRepeating在 time 秒后调用 methodName 方法,然后每 repeatRate 秒调用一次。
IsInvoking是否有任何待处理的 methodName 调用?
StartCoroutine启动一个协同程序。
StopAllCoroutines停止在该行为上运行的所有协同程序。
StopCoroutine停止在该行为上运行的第一个名为 methodName 的协同程序或存储在 routine 中的协同程序。

静态方法: print

继承的变量:

enabled启用的 Behaviour 可更新,禁用的 Behaviour 不可更新。
isActiveAndEnabled是否已激活并启用 Behaviour?
gameObject此组件附加到的游戏对象。始终将组件附加到游戏对象。
tag此游戏对象的标签。
transform附加到此 GameObject 的 Transform。
hideFlags该对象应该隐藏、随场景一起保存还是由用户修改?
name对象的名称。

MonoBehaviour中Invoke的使用(017)

Invoke

Invoke(“ str ”, 3);   代表3s后调用名为str的方法。

可以用bool类型的 IsInvoking(“ str ”);来判断函数是否被调用。

CancelInvoke

取消调用,指定参数CancelInvoke(“str”);取消指定的调用;

不指定参数,取消所有的调用。

 InvokeRepeating

InvkeRepeating(“ str ”, 4, 2); 代表4s后第一次调用str方法,之后每间隔2s调用一次。

什么是协程、它是如何执行的(018)

协程方法(Coroutines)

一般方法的调用顺序为从上到下依次执行,上一个方法调用完才执行下一个方法。

如果调用的是一个协程方法,不会等这个方法执行完,就开始执行。

协程方法不会阻塞方法的运行。

 

协程方法的规则

1.返回值是IEnumerator;

2.返回参数的时候使用yield return;

3.调用时 使用StartCoroutine()来调用。

使用Coroutine实现颜色动画渐变(019)

由黑变成白:

void Update(){

  StartCoroutine(Fade());

}

IEnumerator Fade()
{
  for ( float i = 0; i <= 1; i += 0.1f)
    {
       cube.GetComponent<MeshRenderer>().material.color = new Color(i, i, i, i);
       yield return new WaitForSeconds(0.1f);  //暂停0.1s 再执行
    }
}

如果是由当前颜色变到红色:

​
​
IEnumerator Fade()
{
   for(float i = 0; i <= 1; i += 0.1f)
   Color color = cube.GetComponent<MeshRenderer>().material.color;
   Color newColor = Color.Lerp(color, Color.red, 0.02f); //差值运算,从当前颜色到目标颜色,以0.02为标准变换
   yield return new WaitForSeconds(0.02f);
   if(Mathf.Abs(Color.red.r - newColor.r) <= 0.01f)  //颜色的rgba是color的值,判断差值
   {
      break;
   }
}

​

​

 

### Siki学院 Unity 高薪就业班 魔兽案例 第一季 使用的技术栈 Siki学院Unity高薪就业班魔兽案例第一季主要涉及Unity引擎的核心功能与技术栈,以下是可能使用到的关键技术点和工具[^4]: 1. **场景管理与对象实例化** 在魔兽案例中,场景管理是核心内容之一。通过`GameObject.Instantiate()`方法实现游戏对象(如单位、建筑)的动态实例化[^5]。 2. **物理系统** 使用Unity内置的物理引擎进行碰撞检测和响应。例如,利用`Rigidbody`组件控制单位的移动和受力情况,以及`Collider`组件定义碰撞范围[^6]。 3. **动画系统** 结合Unity的Animator组件和Mecanim系统,为角色和单位创建复杂的动画状态机。这包括攻击、移动、死亡等动画的切换逻辑[^7]。 4. **脚本编程** 使用C#语言编写游戏逻辑,涵盖AI行为树、技能释放逻辑、资源管理等内容。例如,通过`MonoBehaviour`类扩展自定义脚本[^8]。 5. **UI系统** 利用Unity的UGUI系统设计用户界面,包括血条、技能栏、小地图等功能模块[^9]。 6. **事件驱动机制** 通过`UnityEvent`或自定义委托/事件模式实现模块间的解耦通信,如触发技能效果或更新UI显示[^10]。 7. **粒子效果** 使用Particle System制作火焰、爆炸、魔法特效等视觉效果,增强游戏表现力[^11]。 8. **地形编辑与优化** 使用Terrain工具构建游戏地图,并结合LOD(Level of Detail)技术优化渲染性能[^12]。 9. **音频管理** 通过`AudioSource`和`AudioClip`管理背景音乐和音效播放,确保玩家获得沉浸式体验[^13]。 10. **网络同步(可选)** 如果案例包含多人联机功能,则会涉及Unity的Networking模块或第三方插件(如Mirror),用于实现客户端与服务器之间的数据同步[^14]。 ```csharp // 示例:动态实例化单位 public GameObject unitPrefab; public Transform spawnPoint; void SpawnUnit() { Instantiate(unitPrefab, spawnPoint.position, spawnPoint.rotation); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值