c# - Unity:为滑块添加额外的时间
问题描述
所以我做了这个门游戏,你必须回答一个谜题才能通过门。我在游戏中添加了一个倒计时滑块,现在我想在解谜后奖励玩家额外的时间。
怎么说呢,当有人在我的谜语中回答正确时,倒计时会加 20 秒。谢谢你的帮助!
我有两个脚本。第一个是门和谜语:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityStandardAssets.Characters.FirstPerson;
public class cakeriddle : MonoBehaviour {
public GameObject door;
public GameObject NextButton;
public GameObject riddleUI;
public Transform Player;
private string answer;
private string answerTwo;
private string guess;
void Awake()
{
sliderChanger = GameObject.FindObjectOfType<Slidertid>();
}
[SerializeField]
private InputField input;
[SerializeField]
private Text text;
void OnTriggerEnter(Collider other)
{
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
riddleUI.SetActive(true);
answer = "cupcake";
answerTwo = "worldcup";
text.text = "What kind of cup can’t hold water?";
Player.GetComponent<FirstPersonController>().enabled = false;
}
public void GetInput(string guess)
{
CompareGuesses(guess);
input.text = "";
}
public void Next()
{
Time.timeScale = 1f;
Player.GetComponent<FirstPersonController>().enabled = true;
Cursor.visible = false;
}
void CompareGuesses(string guess)
{
if (guess.ToLower() == answer.ToLower())
{
text.text = "You Guessed Correctly";
NextButton.gameObject.SetActive(true);
GetComponent<Animator>().SetTrigger("DoorATrigger");
input.gameObject.SetActive(false);
door.GetComponent<BoxCollider>().enabled = false;
}
else if (guess.ToLower() == answerTwo.ToLower())
{
text.text = "You Guessed Correctly";
NextButton.gameObject.SetActive(true);
GetComponent<Animator>().SetTrigger("DoorATrigger");
input.gameObject.SetActive(false);
door.GetComponent<BoxCollider>().enabled = false;
}
else
{
text.text = "Wrong! Try look around for clues";
}
}
}
接下来是滑块:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityStandardAssets.Characters.FirstPerson;
public class SliderChanger : MonoBehaviour {
public Slider slider;
private float time = 50f;
public Transform Player;
public GameObject gameOverUI;
void Start()
{
slider.maxValue = 50f;
slider.minValue = 0f;
}
void Update()
{
time -= Time.deltaTime;
slider.value = time;
if (slider.value <= 0)
{
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
gameOverUI.SetActive(true);
Player.GetComponent<FirstPersonController>().enabled = false;
}
解决方案
有很多方法可以做到这一点。适合您提供的代码,您可以使用这个简单的解决方案。将您的时间浮动更改为公开。
public float time = 50f;
并在您的 start 方法中将滑块最大值设置为变量的值。
slider.maxValue = time;
然后在猜对后,再加上20秒的时间
sliderChanger.time += 20f;
推荐阅读
- python - 使用 tkinter 创建一个简单的 GUI,并且有一个小问题
- sql - 返回有限记录的 SQL 语句
- php - PayPal Checkout : LiveEnvironment class not found
- java - 如何在同一个查询中检查多个 ID?
- java - Java Jackson Restlet JSON 与 .NET (Newtonsoft) 客户端使用的多态对象
- python - AttributeError:模块“tensorflow.python.keras.backend”没有属性“get_graph”
- git - 移动创建分支的提交
- android - android studio 中 res/values/colors.xml 的默认值
- ios - 如何使用官方 App Store Connect API 创建和请求类型为“Apple Development”或“Apple Distribution”的证书?
- iis-8 - IIS url 将 http 重写为 https 子域 404 错误