Trợ giúp newbie

Minh1995Minh1995 Posts: 2Registered
Xin chào mọi người, em mới tìm hiểu về unity. em đang làm 1 game đơn giản như kiểu game nuôi thú, em muốn click vào một button rồi thanh slider bơm máu theo một giá trị nhất định, code ở dưới em viết nhưng chạy thì nó không tăng, ai chỉ cách cho e với

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ThanhMau : MonoBehaviour {
public float Mau = 500f;
public Slider slider;
private float MauGiam = 1f;
public float MauThem = 300f;
private GameObject Player;


void Awake(){
CapNhat ();
}

// Use this for initialization
void Start () {
slider.maxValue = Mau;
}

// Update is called once per frame
void Update () {
if (Mau > 0) {
Mau -= MauGiam;
slider.value = Mau;
}
}
void CapNhat () {
Player = GameObject.Find("Gau truc");
slider = GameObject.Find ("Air Slider").GetComponent<Slider> ();
slider.minValue = 0f;
slider.maxValue = Mau;
slider.value = slider.maxValue;
}

public void Thuoc(){
slider = GameObject.Find ("Air Slider").GetComponent<Slider> ();
slider.value += MauThem;
}

}

Comments

  • Minh1995Minh1995 Posts: 2Registered
    Minh1995 wrote:
    Xin chào mọi người, em mới tìm hiểu về unity. em đang làm 1 game đơn giản như kiểu game nuôi thú, em muốn click vào một button rồi thanh slider bơm máu theo một giá trị nhất định, code ở dưới em viết nhưng chạy thì nó không tăng, ai chỉ cách cho e với
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    public class ThanhMau : MonoBehaviour {
    public float Mau = 500f;
    public Slider slider;
    private float MauGiam = 1f;
    public float MauThem = 300f;
    private GameObject Player;


    void Awake(){
    CapNhat ();
    }

    // Use this for initialization
    void Start () {
    slider.maxValue = Mau;
    }

    // Update is called once per frame
    void Update () {
    if (Mau > 0) {
    Mau -= MauGiam;
    slider.value = Mau;
    }
    }
    void CapNhat () {
    Player = GameObject.Find("Gau truc");
    slider = GameObject.Find ("Air Slider").GetComponent<Slider> ();
    slider.minValue = 0f;
    slider.maxValue = Mau;
    slider.value = slider.maxValue;
    }

    public void Thuoc(){
    slider = GameObject.Find ("Air Slider").GetComponent<Slider> ();
    slider.value += MauThem;
    }

    }
  • Dang_KhoaDang_Khoa Posts: 3,861Administrators
    Bởi vì khi dùng thuốc, bạn không tăng vào giá trị của máu mà bạn lại tăng giá trị của slider, sau đó hàm update của bạn lại cập nhật slider thành giá trị của máu, nên không thấy gì thay đổi cả.

    Do bạn mới dùng unity nên mình có 1 vài góp ý sau:
    • Hàm GameObject.Find và  GetComponent rất nặng nên hạn chế dùng, thường thì chỉ cần kéo thả trong editor là được rồi, đâu cần dùng hàm này làm gì.
    • Các tên biến như Mau, Player, MauGiam, MauThem phải đặt dúng cách đặt tên biến là viết thường từ đầu và viết hoa các từ còn lại, tức là phải đổi thành mau, player, mauGiam, mauThem.
    Lâu rồi mới thấy có người hỏi về Unity, bạn còn thắc mắc gì cứ hỏi nha
    :) :) :)
Sign In or Register to comment.