Tutti mi chiedono perché ho imparato questa lingua
Süper Üye
Oyunlarda görmüştürsünüz belli bir süre sonrasında buton aktif olur ve hediyeyi alırsın aldıktan sonra ise takrar kapanır bir süre belirir ve o süre bitince tekrardan alabilirsin, bugün bu sistemi anlatacağım.
(2D üzerinde canvas kullanacağım, unityde çok amatör olmadığınızı düşünüyorum.)
Projenize Canvas ekleyin ve Canvasa tıklayarak özelliklerinden UI Scale Mode yi bulup ordaki seçeneği Scale With Screen Size olarak değiştiriyoruz ve Create Empty diyerek gameobject oluşturuyoruz
Sonra Canvasımıza bir Buton ekliyoruz(Butonun içindeki Text'i silme istersen boyutunu değiştirebilirsin yada konumunu sana kalmış)
Butonumuzuda ekledikten sonra projemize HediyeSistemi adında c# script oluşturun isterseniz ismini değiştirebilirsiniz ardından scriptimizi oluşturduğumuz gameobjectin içine atıyoruz
Scriptimize UI kütüphanemizi ekleyelim (using UnityEngine.UI)
ardından public olarak zaman adında Text tanımlayalım(public Text zaman) ondan sonra saat, dakika, saniye, maxSaat ,maxDakika ,maxSaniye olarak public float tanımlayalım(public float saat,dakika,saniye,maxSaat,maxDakika,maxSaniye), alınabilir adında bool tanımlayalım(bool alınabilir) ve Public olarak Button tanımlayalım(public Button ödülButonu)
sonra canvastaki butonumuzu scriptte oluşturduğumuz buton tanımına sürükleyip bırakıyoruz(ödülButonu) ve butonun içindeki texti sürükleyip oluşturduğumuz text kısmına atıyoruz(zaman) ondan sonra ise max saniye dakika ve saati istediğiniz gibi ayarlayın ondan sonra ayarladığınız miktarın aynısını saat dakika ve saniye içinde yapın.
----
Sonra butona tıklayıp özelliklerinden aşağı inip onclick i bulalım ve + ikonuna basalım ondan sonra çıkan yerde runtime only nin altına gameobjectimizi sürükleyelim bırakalım runtime only nin yanına ise tıklayıp hediye sistemini seçip ordanda sandığı seçelim.
Şimdi bir tane Public void oluşturacağız sandık adında bu şekilde
public void sandık()
{
//Kodlar buraya yazılacak
}
Bundan sonra sandık scriptimizin içine şu kodları girecez
----
if (alınabilir)
{
alınabilir = false;
saat = maxSaat;
dakika = maxDakika;
saniye = maxSaniye;
}
----
sonra void updatenin içinede bunları girecez
----
if (alınabilir == false)
{
ödülButonu.interactable = false;
if (saniye > 0)
{
saniye -= 1 * Time.deltaTime;
}
if (saniye <= 0)
{
if (dakika > 0)
{
dakika -= 1;
saniye = 59;
}
}
if (dakika < 0)
{
saat -= 1;
dakika = 59;
}
int x = Convert.ToInt32(saniye);
zaman.text = saat + " saat " + dakika + " dakika " + x + " saniye kaldı.";
if(saat==0 && dakika==0 && x == 0)
{
alınabilir = true;
}
}
if (alınabilir == true)
{
ödülButonu.interactable = true;
zaman.text = "Ödül Alınabilir";
}
PlayerPrefs.SetFloat("saat", saat);
PlayerPrefs.SetFloat("dakika", dakika);
PlayerPrefs.SetFloat("saniye", saniye);
----
void start ın içine ise bu kodları girecez
----
saat = PlayerPrefs.GetFloat("saat");
dakika = PlayerPrefs.GetFloat("dakika");
saniye = PlayerPrefs.GetFloat("saniye");
----
Bütün kodlar(Copy Paste için)
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class HediyeSistemi : MonoBehaviour // Bakın eğer scriptinizin ismini HediyeSistemi koymadıysanız şurdaki HediyeSistemi yazan yeri kendi koyduğunuz script ismiyle değiştirin.
{
public Button ödülButonu;
public Text zaman;
public float saat, dakika, saniye,maxSaat,maxDakika,maxSaniye;
bool alınabilir;
void Start()
{
saat = PlayerPrefs.GetFloat("saat");
dakika = PlayerPrefs.GetFloat("dakika");
saniye = PlayerPrefs.GetFloat("saniye");
}
public void sandık()
{
if (alınabilir)
{
alınabilir = false;
saat = maxSaat;
dakika = maxDakika;
saniye = maxSaniye;
}
}
// Update is called once per frame
void Update()
{
if (alınabilir == false)
{
ödülButonu.interactable = false;
if (saniye > 0)
{
saniye -= 1 * Time.deltaTime;
}
if (saniye <= 0)
{
if (dakika > 0)
{
dakika -= 1;
saniye = 59;
}
}
if (dakika < 0)
{
saat -= 1;
dakika = 59;
}
int x = Convert.ToInt32(saniye);
zaman.text = saat + " saat " + dakika + " dakika " + x + " saniye kaldı.";
if(saat==0 && dakika==0 && x == 0)
{
alınabilir = true;
}
}
if (alınabilir == true)
{
ödülButonu.interactable = true;
zaman.text = "Ödül Alınabilir";
}
PlayerPrefs.SetFloat("saat", saat);
PlayerPrefs.SetFloat("dakika", dakika);
PlayerPrefs.SetFloat("saniye", saniye);
}
}
Video
umarım oyunlarınızda işe yarar
video kalitesi çok kötüymüş
neyse
(2D üzerinde canvas kullanacağım, unityde çok amatör olmadığınızı düşünüyorum.)
Projenize Canvas ekleyin ve Canvasa tıklayarak özelliklerinden UI Scale Mode yi bulup ordaki seçeneği Scale With Screen Size olarak değiştiriyoruz ve Create Empty diyerek gameobject oluşturuyoruz
Sonra Canvasımıza bir Buton ekliyoruz(Butonun içindeki Text'i silme istersen boyutunu değiştirebilirsin yada konumunu sana kalmış)
Butonumuzuda ekledikten sonra projemize HediyeSistemi adında c# script oluşturun isterseniz ismini değiştirebilirsiniz ardından scriptimizi oluşturduğumuz gameobjectin içine atıyoruz
Scriptimize UI kütüphanemizi ekleyelim (using UnityEngine.UI)
ardından public olarak zaman adında Text tanımlayalım(public Text zaman) ondan sonra saat, dakika, saniye, maxSaat ,maxDakika ,maxSaniye olarak public float tanımlayalım(public float saat,dakika,saniye,maxSaat,maxDakika,maxSaniye), alınabilir adında bool tanımlayalım(bool alınabilir) ve Public olarak Button tanımlayalım(public Button ödülButonu)
sonra canvastaki butonumuzu scriptte oluşturduğumuz buton tanımına sürükleyip bırakıyoruz(ödülButonu) ve butonun içindeki texti sürükleyip oluşturduğumuz text kısmına atıyoruz(zaman) ondan sonra ise max saniye dakika ve saati istediğiniz gibi ayarlayın ondan sonra ayarladığınız miktarın aynısını saat dakika ve saniye içinde yapın.
----
Sonra butona tıklayıp özelliklerinden aşağı inip onclick i bulalım ve + ikonuna basalım ondan sonra çıkan yerde runtime only nin altına gameobjectimizi sürükleyelim bırakalım runtime only nin yanına ise tıklayıp hediye sistemini seçip ordanda sandığı seçelim.
Şimdi bir tane Public void oluşturacağız sandık adında bu şekilde
public void sandık()
{
//Kodlar buraya yazılacak
}
Bundan sonra sandık scriptimizin içine şu kodları girecez
----
if (alınabilir)
{
alınabilir = false;
saat = maxSaat;
dakika = maxDakika;
saniye = maxSaniye;
}
----
sonra void updatenin içinede bunları girecez
----
if (alınabilir == false)
{
ödülButonu.interactable = false;
if (saniye > 0)
{
saniye -= 1 * Time.deltaTime;
}
if (saniye <= 0)
{
if (dakika > 0)
{
dakika -= 1;
saniye = 59;
}
}
if (dakika < 0)
{
saat -= 1;
dakika = 59;
}
int x = Convert.ToInt32(saniye);
zaman.text = saat + " saat " + dakika + " dakika " + x + " saniye kaldı.";
if(saat==0 && dakika==0 && x == 0)
{
alınabilir = true;
}
}
if (alınabilir == true)
{
ödülButonu.interactable = true;
zaman.text = "Ödül Alınabilir";
}
PlayerPrefs.SetFloat("saat", saat);
PlayerPrefs.SetFloat("dakika", dakika);
PlayerPrefs.SetFloat("saniye", saniye);
----
void start ın içine ise bu kodları girecez
----
saat = PlayerPrefs.GetFloat("saat");
dakika = PlayerPrefs.GetFloat("dakika");
saniye = PlayerPrefs.GetFloat("saniye");
----
Bütün kodlar(Copy Paste için)
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class HediyeSistemi : MonoBehaviour // Bakın eğer scriptinizin ismini HediyeSistemi koymadıysanız şurdaki HediyeSistemi yazan yeri kendi koyduğunuz script ismiyle değiştirin.
{
public Button ödülButonu;
public Text zaman;
public float saat, dakika, saniye,maxSaat,maxDakika,maxSaniye;
bool alınabilir;
void Start()
{
saat = PlayerPrefs.GetFloat("saat");
dakika = PlayerPrefs.GetFloat("dakika");
saniye = PlayerPrefs.GetFloat("saniye");
}
public void sandık()
{
if (alınabilir)
{
alınabilir = false;
saat = maxSaat;
dakika = maxDakika;
saniye = maxSaniye;
}
}
// Update is called once per frame
void Update()
{
if (alınabilir == false)
{
ödülButonu.interactable = false;
if (saniye > 0)
{
saniye -= 1 * Time.deltaTime;
}
if (saniye <= 0)
{
if (dakika > 0)
{
dakika -= 1;
saniye = 59;
}
}
if (dakika < 0)
{
saat -= 1;
dakika = 59;
}
int x = Convert.ToInt32(saniye);
zaman.text = saat + " saat " + dakika + " dakika " + x + " saniye kaldı.";
if(saat==0 && dakika==0 && x == 0)
{
alınabilir = true;
}
}
if (alınabilir == true)
{
ödülButonu.interactable = true;
zaman.text = "Ödül Alınabilir";
}
PlayerPrefs.SetFloat("saat", saat);
PlayerPrefs.SetFloat("dakika", dakika);
PlayerPrefs.SetFloat("saniye", saniye);
}
}
Video
umarım oyunlarınızda işe yarar
Post automatically merged:
video kalitesi çok kötüymüş