C# Unity滑块填充在开始时不断消失
所以我在Youtube上关注着那个生存射击者,尽管我已经把这个角色做好了,但我还是遇到了一些恼人的、不可思议的小故障。在我制作C# Unity滑块填充在开始时不断消失,c#,unity3d,C#,Unity3d,所以我在Youtube上关注着那个生存射击者,尽管我已经把这个角色做好了,但我还是遇到了一些恼人的、不可思议的小故障。在我制作滑块的那天,它工作得很好。现在,即使值为100,填充也会不断消失。另外,他们用于初始化滑块和图像的代码现在不起作用,因此我查找了另一个代码,它现在起作用了。我使用的是2019.3.0f6版。这是我的密码 using System.Collections; using System.Collections.Generic; using UnityEngine; using
滑块的那天,它工作得很好。现在,即使值为100,填充也会不断消失。另外,他们用于初始化滑块
和图像
的代码现在不起作用,因此我查找了另一个代码,它现在起作用了。我使用的是2019.3.0f6版。这是我的密码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PlayerHealth : MonoBehaviour{
int initHp = 100;
public int currentHp;
public Slider hpSlider;
public Image dmgImg;
AudioClip deathClip;
float flashSpd = 5f;
Color flashColor = new Color(1f, 0f, 0f, 0.1f);
Animator animator;
AudioSource playerAudio;
PlayerMovement playerMovement;
PlayerShooting playerShooting;
bool isDead;
bool isDamaged;
void Awake() {
animator = GetComponent<Animator>();
playerAudio = GetComponent<AudioSource>();
playerMovement = GetComponent<PlayerMovement>();
playerShooting = GetComponentInChildren<PlayerShooting>();
currentHp = initHp;
}
void Start(){
if (GameObject.FindGameObjectWithTag ("hpSlider")) {
hpSlider = (Slider) FindObjectOfType(typeof (Slider));
}
if (GameObject.FindGameObjectWithTag ("dmgImg")) {
dmgImg = (Image) FindObjectOfType(typeof (Image));
}
}
// Update is called once per frame
void Update(){
if(dmgImg != null){
if(isDamaged){
dmgImg.color = flashColor;
Debug.Log("flash color");
}else{
dmgImg.color = Color.Lerp(dmgImg.color, Color.clear, flashSpd * Time.deltaTime);
}
}
dmgImg.color = Color.Lerp(dmgImg.color, Color.clear, flashSpd * Time.deltaTime);
isDamaged = false;
Debug.Log("currentHp: "+currentHp+" sliderVal: "+hpSlider.value);
}
public void TakeDamage(int amt){
isDamaged = true;
currentHp -= amt;
// hpSlider.value = currentHp;
Debug.Log("currentHp: "+currentHp+" sliderVal: "+hpSlider.value);
playerAudio.Play();
if(currentHp <= 0 && !isDead){
Death();
}
}
public void Death(){
isDead = true;
animator.SetTrigger("Die");
// playerAudio.clip = deathClip;
// playerAudio.Play();
playerMovement.enabled = false;
playerShooting.enabled = false;
}
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共级玩家健康:单一行为{
int initHp=100;
公共部门;
公共滑块;
公共形象管理;
音频剪辑死亡剪辑;
浮子闪光SPD=5f;
颜色flashColor=新颜色(1f、0f、0f、0.1f);
动画师;
音频源播放器音频;
PlayerMovement PlayerMovement;
戏院戏院戏院;
布尔死了;
布尔被破坏了;
无效唤醒(){
animator=GetComponent();
playerAudio=GetComponent();
playerMovement=GetComponent();
playerShooting=getComponentChildren();
currentHp=initHp;
}
void Start(){
if(GameObject.FindGameObjectWithTag(“hpSlider”)){
hpSlider=(Slider)FindObjectOfType(typeof(Slider));
}
if(GameObject.FindGameObjectWithTag(“dmgImg”)){
dmgImg=(Image)FindObjectOfType(typeof(Image));
}
}
//每帧调用一次更新
无效更新(){
如果(dmgImg!=null){
如果(已损坏){
dmgImg.color=闪光颜色;
Debug.Log(“flash color”);
}否则{
dmgImg.color=color.Lerp(dmgImg.color、color.clear、flashSpd*Time.deltaTime);
}
}
dmgImg.color=color.Lerp(dmgImg.color、color.clear、flashSpd*Time.deltaTime);
isDamaged=假;
Debug.Log(“currentHp:+currentHp+”sliderVal:+hpSlider.value”);
}
公共财产损失(国际金额){
isDamaged=正确;
当前hp-=金额;
//hpSlider.value=当前HP;
Debug.Log(“currentHp:+currentHp+”sliderVal:+hpSlider.value”);
playerAudio.Play();
如果(currentHp您可以使用[Range()]
属性,它的工作原理如下:
[范围(0,100)]公共int当前HP
很抱歉没有发表评论,因为我看到这不是答案,但我的代表太低(:对于StackOverflow问题,没有什么比得上好的旧-1。我将尝试这样做