Kelime Oyunu Yapmak

Sefer18

Kilopat
Katılım
7 Haziran 2017
Mesajlar
131
Makaleler
1
Daha fazla  
Cinsiyet
Erkek
Öncelikle tüm Technopat Sosyal ailesini selamlıyorum.
Bir kaç gün önce benden bir oyun yapmam istendi. Ne kadar yapamayacağımı söylesem de ısrar edildi. Ben de bir araştırayım dedim. Arkadaşlar yapmak istediğim oyun karmaşık zor bir oyun değil. Basit bir ingilizce kelime oyunu. Oyun biraz kim Milyoner Olmak İster'e benzeyecek. Grafik açısından tüm her şeyi kendim halledebilirim ama programlama bilmiyorum. Bu şekilde benzer hazır bir oyunu alıp değiştirmeyi düşündüm ama etik gelmedi. Zaten İnternet'te çok az benzer oyun var. Sizden isteğim en azından nasıl yapılabilir, ne kullanılmalı veya hazır bir taban varsa onu bana önermeniz. Biliyorum kodlama bilmiyorsan niye bu işe girdin diyeceksiniz. Haklısınız da. Ancak benden bunu isteyen kişiyi de geri çeviremem.
Şimdiden çok teşekkür ederim.
 
Bazı oyun motorları ile sıfır kodlama bilgisi ile oyun yapabilirsiniz. Mobil olacak herhalde oyun değil mi?
Öncelikle ilginiz için gerçekten minnettarım. Oyun mobil olsa belki yapabilirdim. Çünkü mobil ortamda örnek çok ve sanki biraz daha kolay. Ancak oyun Windows İşletim sistemi için olacak. Sanırım akıllı tahtada açmayı planlıyor.
 
O zaman daha kolay. Unity ve Unreal Engine -Unreal'i kullanması biraz daha zor- gibi oyun motorlarını kullanabilirsiniz. Unity'i hatırlamıyorum ama Unreal Engine'de blueprintler ile yapboz gibi birleştirerek tek satır kod yazmadan oyunu bitirebilirsiniz.
 
Ekrana yazı yazarak halledilebilecek bir iş, bence bir oyun motoru kullanarak işleri zorlaştırmaya gerek yok. Bir veritabanında soruları, şıkları ve doğru şıkları tutabilirsiniz. Daha sonra bir form hazırlayarak yazıları veritabanından kolayca çekip hazırlayabilirsiniz. Zamanınız varsa, programlama öğrenerek halletmek istiyorsanız ve Windows üzerinde çalışacaksınız C# öğrenerek hazırlayabilirsiniz, çok zor bir değil ve bu iş için çok fazla programlama bilgisine ihtiyacınız yok. Sorularınızı sorabilirsiniz, elimden geldiğince yardımcı olmaya çalışırım.
 
Öncelikle ilginiz için minnettarım. Unity ile yola devam etmeye karar verdim. Asset Store'den bir quiz oyunu satın aldım. Ancak arkadaş doğru cevap sonucunda kullanıcıya bir şeyler gösterip doğru cevap verildiğini belirtmemiş. Kendim Illustator'den tick ve çarpı görselleri hazırladım. Ancak bunu bir türlü programa uyduramadım. Gerçekten tıkandım. Correct answer sonucu açılmasını istiyorum dogru canvasın sonra 2 saniye ekranda durup kaybolmasını istiyorum. Ancak bir türlü bunu yapamadım. Rica etsem yardım edebilir misiniz?



using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class AllAnswers : MonoBehaviour {

public int idLevel;
public Text Question;
public Text AnswerA;
public Text AnswerB;
public Text AnswerC;
public Text AnswerD;
public Text infoAnswer;
public string[] questions;
public string[] alternativeA;
public string[] alternativeB;
public string[] alternativeC;
public string[] alternativeD;
public string[] corrects;
private int idQuestion;
private float points;
private float ques;
private float correct;
private int Finish;
public GameSound sd;
public GameObject TickCanvas;

// Use this for initialization
void Start ()
{
idLevel = PlayerPrefs.GetInt("idLevel");
idQuestion = 0;
ques = questions.Length;

Question.text = questions[idQuestion];
AnswerA.text = alternativeA[idQuestion];
AnswerB.text = alternativeB[idQuestion];
AnswerC.text = alternativeC[idQuestion];
AnswerD.text = alternativeD[idQuestion];

infoAnswer.text = "Correct Answers "+correct.ToString () + " of " + ques.ToString()+ " Questions.";
DontDestroyOnLoad (this);
}

public void Answersall(string alternative){

if (alternative == "A")
{
if(alternativeA[idQuestion] == corrects[idQuestion])
{
correct += 1;
TickCanvas.SetActive(true);
}
}

else if (alternative == "B")
{
if(alternativeB[idQuestion] == corrects[idQuestion])
{
correct += 1;
TickCanvas.SetActive(true);
}
}

else if (alternative == "C")
{
if(alternativeC[idQuestion] == corrects[idQuestion])
{
correct += 1;
TickCanvas.SetActive(true);
}
}

else if (alternative == "D")
{
if(alternativeD[idQuestion] == corrects[idQuestion])
{
correct += 1;
TickCanvas.SetActive(true);
}
}

nextQuestion ();
}

public void nextQuestion()
{
idQuestion += 1;

if (idQuestion <= (ques- 1))
{
Question.text = questions [idQuestion];
AnswerA.text = alternativeA [idQuestion];
AnswerB.text = alternativeB [idQuestion];
AnswerC.text = alternativeC [idQuestion];
AnswerD.text = alternativeD [idQuestion];

infoAnswer.text = "Correct Answers "+correct.ToString () + " of "+ques.ToString()+ " Questions.";
}

else
{
points = 100 * (correct / ques);
Finish = Mathf.RoundToInt(points);

if (Finish > PlayerPrefs.GetInt ("Finish" + idLevel.ToString ()))
{
PlayerPrefs.SetInt ("Finish"+idLevel.ToString(), Finish);
PlayerPrefs.SetInt ("correct"+idLevel.ToString(), (int)correct);
}


PlayerPrefs.SetInt ("FinishTemp"+idLevel.ToString(), Finish);
PlayerPrefs.SetInt ("correctTemp"+idLevel.ToString(), (int)correct);

Finishhh ();
}

}

public void Finishhh(){

Application.LoadLevel ("Finish");
}

}

Şuan bu kod hatalı durumda...
 
Unity'den pek anlamıyorum açıkçası ancak gördüğüm kodda anladığım kadarıyla doğru cevap verildiğinde Canvas'ı açıyorsunuz. Fakat bundan sonra 2 saniye bekleyip kapatacak bir kod mevcut değil. Biraz araştırdım, oyunu dondurmadan bekletmek için bir kod buldum ama ne kadar sağlıklı çalışacağı hakkında bir fikrim yok.
yield return new WaitForSeconds(2);
If döngüsünde blokların içerisine, Canvas'ı aktif ettiğiniz koddan sonra bu kodu yerleştirip, sonra tekrar Canvas'ı kapatsak olur mu acaba? Yani şöyle demek istiyorum:
C#:
...
if(alternativeA[idQuestion] == corrects[idQuestion])
            {
                correct += 1;
                TickCanvas.SetActive(true);
                yield return new WaitForSeconds(2);
                TickCanvas.SetActive(false);
            }
...
 

İlginiz için çok teşekkür ederim ama benim tek problemim araya süre koymak değil. Şuan canvas açıp kapatamıyorum.
 
Eğer yanlış anlamadıysam doğru cevap seçildiğinde canvastaki objeyi açıp 2-3 saniye bekletip tekrar kapanmasını istiyosunuz. Eğer sorunuz bu ise IEnumerator ile yapabilirsiniz. Normalce fonksiyon oluşturur gibi IEnumerator ile fonksiyon oluşturuyorsunuz. Eğer ki 2-3 dk araştırırsanız kolayca öğrenebilirsiniz. Fazla bir şeyi yok.

Eğer ki sadece canvası açıp kapamak istiyosanız

Public Canvas (Değişken İsmi);

şeklinde scripte tanıtıp canvası kapatmak istediğiniz yerde

(Değişken İsmi).Enabled=false;

şeklinde kapatabilirsiniz. IEnumerator ile de birleştirip zaman ile kapatıp açılmasını sağlayabilirsiniz.
 
Son düzenleme:
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…