Unity,2DSprite,点击

Unity中2D Sprite是游戏开发中常用的一种元素,实现点击功能是2D Sprite在游戏中基础且必不可少的功能。在此,我将详细讲解Unity 2D Sprite的点击实现方法,并且将结合一些示例工程进行演示。

首先,在Unity中实现2D Sprite的点击需要用到Collider2D和相应的事件处理函数。我们可以通过挂载Collider2D组件来实现2D Sprite的碰撞检测功能。Collider2D组件包括如下子类:BoxCollider2D、CircleCollider2D、PolygonCollider2D以及EdgeCollider2D。

BoxCollider2D、CircleCollider2D和PolygonCollider2D都支持Unity默认的事件处理函数OnMouseDown()、OnMouseUp()、OnMouseDrag()等。这些事件函数会在用户鼠标按下、抬起、拖拽等操作发生时响应。接下来,我们结合示例详细讲解实现过程。

示例1:2D Sprite 响应OnMouseDown()事件

在创建脚本文件前,我们需要先在场景中新建2D Sprite对象和Collider2D组件。在GameObject菜单中选择2D Object下的Sprite,创建一个Sprite对象。接下来,在Inspector面板中给Sprite对象添加Collider2D组件,可以自动生成BoxCollider2D组件。

![](https://img-blog.csdn.net/20171006163509168?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVsaXhwbGF5X2NoZWY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

在进入示例代码前,需要注意的是,当前示例采用的是Unity 5.6版本。由于Unity在不同版本上属于升级跨度较大,在使用时需要针对不同版本进行局部修改。

接下来,我们新建一个脚本文件——”ClickSprite”,代码如下:

```

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class ClickSprite : MonoBehaviour {

SpriteRenderer m_renderer;

Color m_color;

void Start () {

m_renderer = GetComponent();

m_color = m_renderer.color;

}

void OnMouseDown() {

m_renderer.color = Color.red;

}

void OnMouseUp() {

m_renderer.color = m_color;

}

}

```

代码解释:

1. 这里我们定义了一个ClickSprite脚本继承自MonoBehaviour,用来对Sprite对象响应事件。

2. 声明了两个变量m_renderer和m_color,分别用来记录Sprite对象的渲染器组件和原始颜色。

3. 在Start函数中获取Sprite对象的渲染器组件,以及该组件的原始颜色。

4. 在OnMouseDown函数中,当用户鼠标按下时,我们将渲染器组件的颜色修改为红色。

5. 在OnMouseUp函数中,当用户鼠标抬起时,我们通过m_color变量将渲染器组件的颜色还原。

完整的工程示例请查看这个链接:

https://github.com/wanshixd/Unity2D-ClickSprite

示例2:2D Sprite 响应OnClick事件

我们可以通过BoxCollider2D中的OnTriggerEnter2D事件,进一步实现Sprite对象的多种响应方式,如OnClick。这里我们继续使用上一示例中的Sprite对象,对OnClick事件进行响应。

与上一示例不同的是,这里我们需要手动添加一个前向刚体rigidbody2D,同时将Collider2D组件的Is Trigger属性打勾。

![](https://img-blog.csdn.net/20171006163624195?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVsaXhwbGF5X2NoZWY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

接下来,我们继续新建脚本文件——“ClickSprite2”,代码如下:

```

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class ClickSprite2 : MonoBehaviour {

SpriteRenderer m_renderer;

Color m_color;

void Start () {

m_renderer = GetComponent();

m_color = m_renderer.color;

}

void OnMouseDown() {

m_renderer.color = Color.red;

}

void OnMouseUp() {

m_renderer.color = m_color;

}

void OnTriggerEnter2D(Collider2D other) {

if (other.tag == "Mouse") {

m_renderer.color = Color.green;

}

}

}

```

代码解释:

1. 这里我们同样定义了一个ClickSprite2脚本对象,用来对Sprite对象进行响应。

2. 声明了与上一示例中相同的变量m_renderer和m_color。

3. 在Start函数中获取渲染器组件m_renderer和原始颜色m_color。

4. 在OnMouseDown和OnMouseUp函数中,我们同样实现响应鼠标按下和抬起操作的功能。

5. 这里我们增加了一个新的事件函数OnTriggerEnter2D。该事件函数在BoxCollider2D对其他对象碰撞时会响应。

6. 在OnTriggerEnter2D函数中,当碰撞到tag为“Mouse”的对象时,我们将渲染器组件的颜色修改为绿色。

完整的工程示例请查看这个链接:

https://github.com/wanshixd/Unity2D-ClickSprite2

综上,我们通过两个实例,详细讲解了Unity 2D Sprite的点击实现方法以及如何响应OnClick事件。如果您在开发中需要实现类似的功能,可以参考上述方法进行开发。


点赞(80) 打赏
如果你喜欢我们的文章,欢迎您分享或收藏为众码农的文章! 我们网站的目标是帮助每一个对编程和网站建设以及各类acg,galgame,SLG游戏感兴趣的人,无论他们的水平和经验如何。我们相信,只要有热情和毅力,任何人都可以成为一个优秀的程序员。欢迎你加入我们,开始你的美妙旅程!www.weizhongchou.cn

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部