RPG黑暗之光04

任务系统

在场景中添加老爷爷npc

将事先准备好的老爷爷素材拖入场景并调整到合适大小和位置
在这里插入图片描述
给老爷爷加个Box Collider,并调整到合适大小
在这里插入图片描述

在这里插入图片描述

设计任务对话框的背景

在UI Root里创建一个Sprite并改名为Qust

在这里插入图片描述在Qust中点击sprite,并在事先准备好的图集中选择任务系统的背景图片
在这里插入图片描述
给任务对话框加入进场动画Tween Position

在这里插入图片描述

设计任务的内容

创建一个lable,改名为Des,里面用来加入任务描述
在这里插入图片描述
给Des中加入文本,并修改到合适的大小及位置
在这里插入图片描述

创建一个lable,改名为accept然后点击Sprite将按钮的图片添加 进去,然后鼠标右键添加一个Box collider

在这里插入图片描述
把点击的图片信息添加上去,然后按照同样的方法创建另一个按钮
在这里插入图片描述
在这里插入图片描述
修改PlayerDir中的代码防止点击任务对话框的时候任务还能移动
在这里插入图片描述

处理任务对话框的显示和隐藏

给npc老爷爷加入代码BarNPC,源码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BarNPC : MonoBehaviour {
    public TweenPosition questTween;
	void OnMouseOver()//当鼠标位于这个collider之上的时候,会在每一帧调用这个方法
    {
        if (Input.GetMouseButtonDown(0))//当点击了老爷爷
        {
            ShowQuest();
        }
    }
    void ShowQuest()
    {
        questTween.gameObject.SetActive(true);
        questTween.PlayForward();
    }
    void HideQuest()
    {
        questTween.PlayReverse();
    }
    public void OnCloseButtonClick()
    {
        HideQuest();
    }
}

在UI界面创建一个关闭按钮,将npc老爷爷拖入Notify中,并选择创建的方法OnCloseButtonClick

在这里插入图片描述

处理任务的接收和任务进度

修改BarNPC代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BarNPC : MonoBehaviour {


    public TweenPosition questTween;
    public UILabel desLabel;


    public GameObject acceptBtnGo;
    public GameObject okBtnGo;
    public GameObject cancelBtnGo;
    public bool isInTask = false;//表示是否在任务中
    public int KillCount = 0;//表示任务进度,已经杀死几只狼


    private PlayerSatus satus;
    void Start()
    {
        satus = GameObject.FindGameObjectWithTag(Tags.player).GetComponent<PlayerSatus>();
    }
   
	void OnMouseOver()//当鼠标位于这个collider之上的时候,会在每一帧调用这个方法
    {
        if (Input.GetMouseButtonDown(0))//当点击了老爷爷
        {
            if(isInTask){
                ShowTaskProgress();
            }
            else
            {
                ShowTaskDes();
            }
            ShowQuest();
        }
    }
    void ShowQuest()
    {
        questTween.gameObject.SetActive(true);
        questTween.PlayForward();
    }
    void HideQuest()
    {
        questTween.PlayReverse();
    }

    void ShowTaskDes()
    {
        desLabel.text = "任务:\n杀死了10只狼\n\n奖励:\n1000金币";
        okBtnGo.SetActive(false);
        acceptBtnGo.SetActive(true);
        cancelBtnGo.SetActive(true);
    }
    void ShowTaskProgress()
    {
        desLabel.text = "任务:\n你已经杀死了" + KillCount + "\\10只狼\n\n奖励:\n1000金币";
        okBtnGo.SetActive(true);
        acceptBtnGo.SetActive(false);
        cancelBtnGo.SetActive(false);
    }
    //定义三个事件处理任务对话框上的按钮点击事件
    public void OnCloseButtonClick()
    {
        HideQuest();
    }
    public void OnAcceptButtonClick()
    {
        ShowTaskProgress();
        isInTask = true;//表示在任务中
    }
    public void OnOkButtonClick()
    {
        if (KillCount>=10)//完成任务
        {
            satus.GetCoint(1000);
            KillCount = 0;
            ShowTaskDes();
        }
        else//没完成任务
        {
            HideQuest();
        }
    }
    public void OnCancelButtonClick()
    {
        HideQuest();
    }
}

将按钮依次拖入npc的代码中
在这里插入图片描述
在每个按钮分别选择对应的
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值