Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 统一:添加额外的时间滑块_C#_Unity3d_Slider - Fatal编程技术网

C# 统一:添加额外的时间滑块

C# 统一:添加额外的时间滑块,c#,unity3d,slider,C#,Unity3d,Slider,所以我在做这个门游戏,你必须回答一个谜语才能通过门。我在游戏中添加了一个倒计时滑块,现在我想在谜语解开时奖励玩家额外的时间 我怎么能说,当有人回答我的谜语正确时,倒计时会增加20秒。 谢谢你的帮助 我有两个脚本。第一个是门和谜语: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityStandardAssets.Charact

所以我在做这个门游戏,你必须回答一个谜语才能通过门。我在游戏中添加了一个倒计时滑块,现在我想在谜语解开时奖励玩家额外的时间

我怎么能说,当有人回答我的谜语正确时,倒计时会增加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";
}
}
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
使用UnityStandardAssets.Characters.FirstPerson;
公共类结块:单一行为{
公共游戏对象门;
公共游戏对象下一个按钮;
公共游戏对象界面;
公共转换播放器;
私有字符串应答;
私人字符串应答器2;
私人字符串猜测;
无效唤醒()
{
sliderChanger=GameObject.FindObjectOfType();
}
[序列化字段]
专用输入字段输入;
[序列化字段]
私人文本;
无效对撞机(对撞机其他)
{
Cursor.visible=true;
Cursor.lockState=CursorLockMode.None;
ridleui.SetActive(true);
回答=“纸杯蛋糕”;
回答二:“世界杯”;
text.text=“什么样的杯子不能盛水?”;
Player.GetComponent().enabled=false;
}
公共void GetInput(字符串猜测)
{
比较(猜测);
input.text=“”;
}
下一个公共空间()
{
Time.timeScale=1f;
Player.GetComponent().enabled=true;
Cursor.visible=false;
}
空比例尺(字符串猜测)
{
if(guess.ToLower()==answer.ToLower())
{
text.text=“你猜对了”;
NextButton.gameObject.SetActive(true);
GetComponent().SetTrigger(“DoorATrigger”);
input.gameObject.SetActive(false);
door.GetComponent().enabled=false;
}
else if(guess.ToLower()==answerTwo.ToLower())
{
text.text=“你猜对了”;
NextButton.gameObject.SetActive(true);
GetComponent().SetTrigger(“DoorATrigger”);
input.gameObject.SetActive(false);
door.GetComponent().enabled=false;
}
其他的
{
text.text=“错!试着四处寻找线索”;
}
}
}

下一个是滑块:

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;
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
使用UnityStandardAssets.Characters.FirstPerson;
公共类幻灯片转换器:MonoBehavior{
公共滑块;
专用浮动时间=50f;
公共转换播放器;
公共游戏对象gameOverUI;
void Start()
{
slider.maxValue=50f;
slider.minValue=0f;
}
无效更新()
{
time-=time.deltaTime;
slider.value=时间;

如果(slider.value有很多方法可以做到这一点。根据您提供的代码,您可以使用这个简单的解决方案。 将您的时间浮动更改为公共时间

public float time = 50f;
在开始方法中,将滑块最大值设置为变量的值

slider.maxValue = time;
在猜对之后,再加上20秒

sliderChanger.time += 20f;

好的,非常感谢。据我所知,我将在我的谜语脚本中添加:sliderChanger.time+=20f;。该脚本如何访问我的时间/sliderChanger脚本?有很多方法,但很难说,因为这取决于您的项目和场景的结构。您可以尝试GameObject.FindObjectOfType()但是如果你有多个SliderChanger的实例,它就不可靠了。很高兴我能帮上忙:)谢谢它现在起作用了!!!你让我开心了…现在去买你应得的冰淇淋吧!