Unity API 学习笔记——03

四、协程

1、Coroutines执行
在这里插入图片描述
Coroutines
(1)返回值是IEnumerator
(2)返回参数的时候使用yield return null/0;
(3)协程方法的调用StartCoroutine(method())

测试代码:

public GameObject cube;
	void Start () {
        print("hha");
        StartCoroutine(ChangeColor());//协程方法开启后,会继续运行下面的代码,不会等协程方法运行结束才继续执行
        print("hahaha");
	}
IEnumerator ChangeColor()
    {
        print("hahaColor");
		 yield return new WaitForSeconds(3);//等待三秒再继续执行
        cube.GetComponent<MeshRenderer>().material.color = Color.blue;
        print("hahaColor");
        yield return null;
}

2、Coroutines实现颜色动画渐变
测试代码:


void Update() {
     if (Input.GetKeyDown(KeyCode.Space))
        {
		   StartCoroutine("Fade");
        }
     }
IEnumerator Fade()
    {
        for (; ; )
        {
            Color color = cube.GetComponent<MeshRenderer>().material.color;
            Color newColor = Color.Lerp(color, Color.red, 0.02f);
            cube.GetComponent<MeshRenderer>().material.color = newColor;
            yield return new WaitForSeconds(0.02f);
            if (Mathf.Abs(Color.red.g - newColor.g) <= 0.01f)
            {  break;   }
        }
}

3、Coroutines协程的开启和关闭
(1)StartCouroutine:开启协程
(2)StopCouroutine:关闭协程
(3)StopAllCouroutine:关闭所有协程

测试代码:

private IEnumerator ie;
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            //ie = Fade();
            //StartCoroutine(ie);
            StartCoroutine("Fade");
        }
        if (Input.GetKeyDown(KeyCode.S))
        {
            //StopCoroutine(ie);
            StopCoroutine("Fade");
        }
}

五、鼠标相关事件函数OnMouseXXX

(1)OnMouseDown:鼠标按下时调用。
(2)OnMouseDrag:按下鼠标并且仍然按住鼠标不放。
(3)OnMouseEnter:鼠标移入时。
(4)OnMouseExit:鼠标移出时。
(5)OnMouseOver:鼠标在上面时。
(6)OnMouseUp:释放鼠标按钮时。
(7)OnMouseUpAsButton:鼠标被释放到与它被按下相同时。

六、Mathf

1、Mathf的静态变量
(1)Deg2Rad:角度-弧度转换常数(只读)。
(2)Rad2Deg:弧度-角度转换常数(只读)。
(3)Infinity:正无穷(只读)的表示。
(4)NegativeInfinity:负无穷(只读)的表示。
(5)PI: π 3.14159265358979…值(只读)。
(6)Epsilon:一个很小的浮点值(只读)。
2、Mathf的静态方法
(1)Abs:绝对值。
(2)Ceil:向上取整。(返回大于或等于f的最小整数)返回float类型
(3)CeilToInt:向上取整。Int类型
(4)Clamp:把一个值限定在一个范围之内。(在最小浮点数和最大浮点数之间夹住一个值。)

测试代码:(血量)

private int hp = 100;
    void TakeDamage()
    {
        hp -= 10;
        hp = Mathf.Clamp(hp,0, 100);
    }

(5)Clamp01:将值夹在0和1之间并返回值。
(6)ClosestPowerOfTwo:返回两个值的最近幂。
(7)DeltaAngle:计算以度为单位的两个给定角度之间的最短差值。
(8)Exp:返回e的指定次方。
(9)Floor:向上取整。(返回小于或等于f的最大整数)返回float类型
(10)FloorToInt:向上取整。返回int类型
(11)Pow(f,p):返回f的p次方。
(12)Sqrt:返回参数的平方根。
(13)Max:最大值。
(14)Min:最小值。
(15)MoveTowards:将一个值移动到目标,移动控制。
(16)Lerp:用t在a和b之间做线性插值。
(17)LerpAngle:与Lerp相同,但是确保当它们环绕360度时内插正确。

测试代码:(差值移动)

public class API10Mathf : MonoBehaviour {
public Transform cube;
public float speed = 3;
      void Start()
    {
        cube.position = new Vector3(0, 0, 0);
	 }
    void Update()
    {
       float x = cube.position.x;
       //float newX = Mathf.Lerp(x, 10, Time.deltaTime*speed);//减速运动
       float newX = Mathf.MoveTowards(x, 10, Time.deltaTime*speed);//匀速运动
       cube.position = new Vector3(newX, 0, 0);
}

(18)PingPong(float t, float length):ping ping值t,这样它就不会大于长度,也不会小于0。

测试代码:(往返运动,匀速)

cube.position = new Vector3(5+Mathf.PingPong(Time.time*speed, 5), 0, 0);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习Unity3D时,以下是一些重要的笔记: 1. Unity3D基础知识: - 游戏对象(Game Objects)和组件(Components):了解游戏对象的层次结构和组件的作用。 - 场景(Scenes)和摄像机(Cameras):学会如何创建场景并设置摄像机视角。 - 材质(Materials)和纹理(Textures):掌握如何创建和应用材质和纹理。 - 动画(Animations):学习如何创建和控制游戏对象的动画。 2. 脚本编程: - C#语言基础:了解C#语言的基本语法和面向对象编程概念。 - Unity脚本编写:学习如何编写脚本来控制游戏对象的行为和交互。 - 常见组件和功能:掌握常见的Unity组件和功能,如碰撞器(Colliders)、刚体(Rigidbodies)、触发器(Triggers)等。 3. 游戏开发流程: - 设计游戏关卡:了解如何设计游戏场景和关卡,包括布局、道具、敌人等。 - 游戏逻辑实现:将游戏规则和玩家交互转化为代码实现。 - UI界面设计:学习如何设计游戏中的用户界面,包括菜单、计分板等。 - 游戏优化和调试:优化游戏性能,解决常见的错误和问题。 4. 学习资源: - Unity官方文档和教程:官方提供了大量的文档和教程,逐步引导你学习Unity3D。 - 在线教程和视频教程:网上有很多免费和付费的Unity教程和视频教程,可根据自己的需求选择学习。 - 社区论坛和博客:加入Unity开发者社区,与其他开发者交流并获取帮助。 通过系统地学习这些内容,你将能够掌握Unity3D的基础知识并开始开发自己的游戏项目。记得不断实践和尝试,不断提升自己的技能!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值