āļŠāļēāļĢāļāļēāļāļāļđāđāđāļāļĩāļĒāļ
Guess Card Game āđāļāļĄ Casual Game āļāļĩāđāđāļĨāđāļāļāđāļēāļĒ āļŠāļāļēāļĒ āđ āđāļāļĨāļīāļ āđāļ§āđāđāļĨāđāļ Party āļāļąāļāđāļāļ·āđāļāļāļāđāļāļĩ (!Must Try!)
āđāļāļĩāļĒāļāđāļāļĒ
Chairawit Iamkhajornchai
Internship @ borntoDev
āļāļāļāļ§āļēāļĄāļāļĩāđāļāļĩāļāļīāļĄāļāđ āđāļĨāļ° āđāļāļĒāđāļāļĢāđāđāļĄāļ·āđāļ 12 āļāļĢāļāļāļēāļāļĄ 2566
āđāļāļĒāđāļāļ·āđāļāļāļāđāļāđāļāļĢāđāļāļāļāđāļāļĩāđāđāļĢāļēāļāļ°āļĄāļēāļāļģāđāļāļ§āļąāļāļāļĩāđāļāļ·āļ Guess Card Game
āđāļāļĒ āļāļĄāđāļāđāđāļĢāļāļāļąāļāļāļēāļĨāđāļ āļāļēāļ Video āđāļ Youtube āļāļāļāļāđāļāļ Awesome Tuts āđāļāļāļ·āđāļāļāļĨāļīāļāļ§āđāļē “How To Build Rock Paper Scissors Game | Unity Tutorialâ āļāļēāļāļāļĨāļīāļāļāļ°āļŠāļāļāļāļēāļĢāļāļģāđāļāļĄ āđāļāđāļēāļĒāļīāđāļāļāļļāļ āļāļķāđāļāļāļĄāļĄāļāļāļ§āđāļēāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļģāļĄāļēāļāđāļāļĒāļāļāđāļāđāļāļĩāļĒāļāđāļāđāļāđ āđāļāļĒāļāļĄāđāļāđāļāļģāđāļāđāļāļĩāļĒāļāļēāļ Board Game : Spyfall āđāļāđāļēāļĄāļēāđāļŠāļĢāļīāļĄāļāđāļ§āļĒāđāļāļĒāļāļģāļāļēāļĢāļĨāļ Scope āđāļāļ·āđāļāđāļŦāđāļāļģāđāļāđāļāđāļēāļĒāļāļķāđāļ āļāđāļ§āļĒ Concept āļāđāļēāļĒ āđ āļāļ·āļāļāļ°āļĄāļĩāļāļģāđāļāđāļĄāļēāđāļŦāđāļāļĢāđāļāļĄāļāļąāļāļāļēāļĢāđāļāļāļąāļ§āđāļĨāļ·āļāļ 3 āđāļ āļāļķāđāļ 1 āđāļāļāļąāđāļāļĄāļĩāđāļāļāļĩāđāļāļđāļāļāđāļāļāļāļĒāļđāđ āđāļāļĒāđāļāļĄāļāļĩāđāļāđāđāļāđāļāļąāļāļāļēāļāđāļ§āļĒ Unity
āļāļēāļāļāļĩāđāļāļĨāđāļēāļ§āļĄāļēāļāđāļēāļāļāđāļāļŠāļģāļŦāļĢāļąāļāļĄāļ·āļāđāļŦāļĄāđāļāļĩāđāļāđāļāļāļāļēāļĢāļāļ°āļāļģāđāļāļĄāļāļāļāļāļąāļ§āđāļāļāļŠāļąāļāđāļāļĄāđāļĨāđāļ§āđāļāļēāđāļāļāđāļāļĒāļāļāļŦāļĢāļ·āļāđāļĄāđāļāđāļāļģāđāļĨāđāļāļāļąāļāđāļāļ·āđāļāļāļāļąāļāļŠāļāļļāļ āđ āļāļąāļāļāđāļāļēāļĄ āļ§āļąāļāļāļĩāđāļāļĄāļāđāļāļāļŦāļĒāļīāļāđāļāļĄāļāļĩāđāļĄāļĩāļāļ§āļēāļĄāļāđāļēāļĒāļāļĒāđāļēāļ Guess Card Game āļĄāļēāļĨāļāļāđāļŦāđāđāļāļ·āđāļāļ āđ āļāļģāļāļēāļĄāđāļāļāļĢāđāļāļĄ āđ āļāļąāļāđāļĨāļĒāļāļ° āđāļāļĒāđāļāđāļēāđāļāļĄāļāļĩāđāđāļĢāļēāļāļ°āļāļģāđāļāļ§āļąāļāļāļĩāđāđāļāđāļāļĢāļđāļāđāļāļ 2 āļĄāļīāļāļī āļŠāļēāļĄāļēāļĢāļāļāļģāđāļāđāļĨāđāļāđāļāđāļāļąāđāļāđāļāļĨāļāļāļāļĢāđāļĄāļāļĩāđāđāļāđāļāļĄāļ·āļāļāļ·āļ āđāļ§āđāļāđāļāļāđ āđāļĨāļ°āļāļāđāļāļĢāļ·āđāļāļ PC āļāļĩāļāļāđāļ§āļĒ āđāļāļĩāđāļĒāļ§āļāđāļēāļāļļāļāļāļāļāļĢāđāļāļĄāđāļĨāđāļ§āđāļĢāļēāđāļāļĨāļāļĄāļ·āļāļāļģāļāļĢāđāļāļĄāļāļąāļāđāļĨāļĒ!!!
āļāļąāđāļāļāļāļāļāļĩāđ 1 : āđāļāļĢāļĩāļĒāļĄāđāļāļĢāđāļāļĢāļĄāļāļĩāđāđāļāđ ðŪ
- Unity : https://unity.com/download
- Visual Studio Community : https://visualstudio.microsoft.com/vs/community/
- Unity Store āļŠāļģāļŦāļĢāļąāļāļŦāļē Assets https://assetstore.unity.com/packages/2d/textures-materials/rock-climber-slot-game-assets-50243
āļāļąāđāļāļāļāļāļāļĩāđ 2 : āđāļĢāļīāđāļĄāļŠāļĢāđāļēāļāđāļāļĢāđāļāļāļāđāđāļ Unity
1. āđāļāļīāļāđāļāļĢāđāļāļĢāļĄ Unity āđāļĨāđāļ§āļāļģāļāļēāļĢāļāļ New project
 2.āđāļĨāļ·āļāļāļĢāļđāļāđāļāļāđāļāđāļāđāļāļ 2D āđāļĨāđāļ§āļāļ Create project
āļāļĨ.āļŦāļĨāļąāļāļāļēāļ create project āđāļĨāđāļ§āļāļēāļāđāļāđāđāļ§āļĨāļēāđāļāļāļēāļĢāļŠāļĢāđāļēāļāļŦāļāđāļāļĒāļāļ°āļāļĢāļąāļ āļāļąāđāļāļāļĩāđāļāļķāđāļāļāļĒāļđāđāļāļąāļ āļāļ§āļēāļĄāđāļĢāđāļ§ PC āļāļāļāđāļāđāļĨāļ°āļāļ
3. āđāļĢāļīāđāļĄāļŠāļĢāđāļēāļ Game Object āļāļąāļāđāļĨāļĒ āđāļāļĒāđāļĢāļēāļāļ°āđāļĢāļīāđāļĄāļāļąāļāļāļēāļ Background āļāļēāļāļŦāļĨāļąāļāļāļāļāđāļāļĄāļāļąāļāļāđāļāļāļāļ°āļāļĢāļąāļāđāļĢāļīāđāļĄāļāļĩāđ āđāļāđāļāļģāļŠāļąāđāļ ctrl + 4 āđāļāļīāļāļŦāļāđāļēāļāđāļēāļ Hierachy āļāļķāđāļāļĄāļē āļāļēāļāļāļąāđāļāļāļēāļĄāļāđāļ§āļĒ āļāļĨāļīāļāļāļ§āļēāļāļĩāđ UI â Image
āļŠāđāļ§āļ Inspector āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļĢāļąāļ āļŠāļĩ āđāļĨāļ° āļāļāļēāļāļāļāļ Background āđāļāđāđāļāļĒ āļāļĢāļąāļāļāļĢāļ Rect Transform āđāļĨāļĒ
4. āļāļąāļāļāļģ Element āļāļēāļĢāđāļāļŠāļģāļŦāļĢāļąāļāđāļĨāđāļāđāļĨāļ°āļāļģāđāļāđāļĢāļ§āļĄāđāļāļāļķāļ āļāļĢāļāļ āļāļģāļāļēāļĄ āđāļāļĒāļ§āļīāļāļĩāļāļēāļĢāļāļ°āļāļĨāđāļēāļĒāļāļąāļāļāļąāđāļāļāļĩāđ 2 āļāļ°āđāļāđāļŦāļāđāļēāļāļēāļāļĢāļ°āļĄāļēāļāļāļĩāđāđāļĨāļĒāđāļāļĒāļāđāļēāđāļĢāļēāļāļĒāļēāļāļāļāđāļāđāļāđāļāļīāđāļĄāđāļāļīāļĄāļāđāđāļŦāđāđāļŦāļĨāļ Assets āļĄāļēāđāļĨāđāļ§āļāļģāļāļēāļĢāđāļĢāļĩāļĒāļāđāļāđāđāļāđāļēāļĄāļēāđāļāđāđāļĨāļĒ
āļāļ°āđāļāđāļŦāļāđāļēāļāļēāļāļĢāļ°āļĄāļēāļāļāļĩāđāđāļĨāļĒ āđāļāļĒāļāđāļēāđāļĢāļēāļāļĒāļēāļāļāļāđāļāđāļāđāļāļīāđāļĄāđāļāļīāļĄ āļāđāđāļŦāđāđāļŦāļĨāļ Assets āļĄāļēāđāļĨāđāļ§ āļāļģāļāļēāļĢ import āđāļĢāļĩāļĒāļāđāļāđāđāļāđāđāļĨāļĒ
5. āļŦāļĨāļąāļāļāļēāļāļāļāđāļāđāļāđāļŠāļĢāđāļāļŠāļīāđāļ āđāļĨāđāļ§āļŦāļāđāļēāļāļēāļāļĢāļēāļ§āđāļāđāļāļ°āļāļĢāļ°āļĄāļēāļāļāļĩāđ
āļāļąāđāļāļāļāļāļāļĩāđ 3 : āļĄāļēāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāļāļ§āļāļāļļāļĄāđāļāļĄāļāđāļ§āļĒāļāļąāļāļāđāļ C#
1. āđāļāļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļĢāļēāļāļ°āđāļāđāđāļāđāļāļ āļēāļĐāļē C# āđāļĨāđāļ§āļāļģāļāļēāļĢāļŠāļĢāđāļēāļāđāļāļĨāļāđāļāļāļĢāđ Scripts āđāļĨāđāļ§āļāļĨāļīāļāļāļ§āļēāđāļĨāļ·āļāļ C# Script āļāļąāđāļāļāļ·āđāļ
2. āđāļāļĩāļĒāļāđāļāđāļāđāļāļĒāļāļ°āļŠāļĢāđāļēāļ Card.cs āļāļķāđāļāļĄāļē āđāļāļ·āđāļāļāļ§āļāļāļļāļĄ card object āđāļāđāļāļĄ āđāļāļĒāļāļēāļĢ import namespace āđāļĨāļ° Library āļāļĩāđāļāļģāđāļāđāļ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
āļāļĢāļ°āļāļēāļĻāļāļĨāļēāļŠāļāļ·āđāļ Card āļāļĩāđ inherit āļāļēāļ MonoBehaviour āđāļ Unity āļāļķāđāļāļŦāļĄāļēāļĒāļāļ§āļēāļĄāļ§āđāļēāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāđāļāļāļŠāļāļĢāļīāļāļāđāļāļąāļāļāļāļāđāļāļāļāđāļāļāļāđāļāļĄāđāļāđāļāļĢāđāļāļĢāļĄ Unity āđāļāļ·āđāļāđāļāđāļēāļāļķāļāđāļĨāļ°āļāļ§āļāļāļļāļĄāļāļąāļāļāđāļāļąāļāđāļĨāļ°āļāļąāļ§āđāļāļĢāđāļāđ
public class Card : MonoBehaviour
{
public string cardInfo;
}
āļ āļēāļĒāđāļāļāļĨāļēāļŠ “Card” āļĄāļĩāļāļąāļ§āđāļāļĢāļāļĩāđāđāļāđāļ public āļāļ·āđāļāļ§āđāļē “cardInfo” āļāļĩāđāļĄāļĩ type āđāļāđāļ string āđāļāļĒāļĄāļąāļāļāļ°āđāļāđāļāļāđāļāļĄāļđāļĨāļāļąāļ§āļāđāļēāļ āđ āđāļāļĩāđāļĒāļ§āļāļąāļāļāļēāļĢāđāļāđāļ§āđ āđāļĨāļ°āļāļąāļ§āđāļāļĢ isOpen āļāļĩāđāļāļĢāļ°āļāļēāļĻāđāļāđāļ private āļĄāļĩāļāļāļīāļāđāļāđāļ boolean āđāļāļēāđāļ§āđāļāļāļāļŠāļāļēāļāļ°āļ§āđāļēāļāļēāļĢāđāļāļīāļāļŦāļĢāļ·āļāļāļīāļāļāļĒāļđāđāđāļāļĒāđāļĢāļīāđāļĄāļāđāļāđāļĢāļēāļāļ°āļāļģāļŦāļāļāļāđāļēāđāļŦāđāđāļāđāļ false āļāļąāđāļāļŦāļĄāļēāļĒāļāļķāļāđāļĢāļīāđāļĄāļāđāļāļāļēāļĢāđāļāļāļ°āļāļ§āđāļģāļāļĒāļđāđ
public void OpenCard()
{
if (isOpen)
{
return;
}
isOpen = true;
Debug.Log("Card opened: " + cardInfo);
}
āļāđāļāļĄāļēāđāļāđāļāļāļēāļĢāļŠāļĢāđāļēāļāļāļąāļāļāđāļāļąāļāļāļ·āđāļāļ§āđāļē “OpenCard()” āđāļāđāļāļāļąāļāļāđāļāļąāļāļāļĩāđāđāļāđāđāļāļāļēāļĢāđāļāļīāļāļāļēāļĢāđāļ āļāđāļāļāļāļ·āđāļāļāđāļāļāđāļāđāļāļāđāļāļāļ§āđāļēāļāļēāļĢāđāļāđāļāļīāļāļāļĒāļđāđāļĄāļąāđāļĒ āđāļāļĒāļāļđāļāļēāļāļāļąāļ§āđāļāļĢ “isOpen” āļŦāļēāļāļāļēāļĢāđāļāđāļāļīāļāļāļĒāļđāđāđāļĨāđāļ§ āļāļąāļāļāđāļāļąāļāļāļ° return āļāļĨāļąāļĄāļēāđāļāļĒāđāļĄāđāļāļģāļāļ°āđāļĢāđāļĨāļĒ āđāļāđāļāđāļēāđāļĄāđāđāļāđāļēāđāļāļ·āđāļāļāđāļāļāļ°āđāļŦāđ “isOpen” āđāļāđāļ true āļŦāļĄāļēāļĒāļāļķāļāļāļēāļĢāđāļāđāļāļīāļāļāļĒāļđāđāđāļāļāļāļ°āļāļĩāđ āđāļĨāļ°āđāļŠāļāļāļāđāļāļāļ§āļēāļĄāđāļāļāļ console āđāļ Unity āđāļāļĒāđāļāđāļāļąāļāļāđāļāļąāļ Debug.Log() āđāļāļ·āđāļāđāļŠāļāļāļāđāļāļĄāļđāļĨāļāļāļāļāļēāļĢāđāļ
public string GetCardInfo()
{
return cardInfo;
}
āļŠāļļāļāļāđāļēāļĒāđāļĢāļēāļāļ°āļŠāļĢāđāļēāļāļāļąāļāļāđāļāļąāļ “GetCardInfo()” āđāļāļ·āđāļ return āļāđāļēāļāļāļ “cardInfo” āļĄāļēāđāļāđāđāļĨāļ°āđāļāđāļāđāļāļāđāļāđāļĄāļŠāļēāļĄāļēāļĢāļāļāļđāđāļāđāļāļĩāđāļāđāļēāļāļĨāđāļēāļāđāļāđāđāļĨāļĒ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Card : MonoBehaviour
{
public string cardInfo;
private bool isOpen = false;
public void OpenCard()
{
if (isOpen)
{
return;
}
isOpen = true;
Debug.Log("Card opened: " + cardInfo);
}
public string GetCardInfo()
{
return cardInfo;
}
}
3. āđāļāļĩāļĒāļāđāļāđāļāđāļāļŠāđāļ§āļ GameManager āļāļąāļ§āļāļ§āļāļāļļāļĄāļāļēāļĢāđāļĨāđāļāđāļāļĄāļŦāļĨāļąāļ
using UnityEngine;
using UnityEngine.UI;
public class GameManagers : MonoBehaviour
{
public CardShuffler cardShuffler;
public GameObject blackbox;
public Image resultImage;
public Button cardA;
public Button cardB;
public Button cardC;
public Sprite winSprite; // Assign the win sprite in the Inspector
public Sprite loseSprite; // Assign the lose sprite in the Inspector
public bool gameEnded = false;
āļŦāļĄāļēāļĒāđāļŦāļāļļ āļāļēāļāļāļĄāļāļĢāļ°āļāļēāļĻāđāļāđāļ GameManagers āđāļāļīāļĄ s āļāļ°āļāļĢāļąāļāđāļāļ·āđāļāļāļāđāļ§āļĒāļāļ·āđāļ GameManager āđāļĄāđāļŠāļēāļĄāļēāļĢāļāđāļāđāđāļāđāđāļāļĢāļēāļ°āđāļāđāļ Global
āļĄāļēāļāļąāļāļāļĩāđāļŠāđāļ§āļāđāļĢāļāļāļąāļāļāđāļāļāļāļ°āļāļĢāļąāļ āđāļĢāļēāļāļ°āļāļĢāļ°āļāļēāļĻāļŠāļĢāđāļēāļ Object āļāļĨāđāļāļāļāļģāļāļķāđāļāļĄāļē āļāļąāļ Image āļŠāļģāļŦāļĢāļąāļāđāļāļĄāļĢāļđāļāļāļēāļĢāđāļāđāļāļĨāļĒāđāļĨāļ° Button āļāļāļāļāļēāļĢāđāļāļāļąāđāļ 3 āđāļ āļĢāļ§āļĄāđāļāļāļķāļāļĢāļđāļāļ āļēāļāđāļĄāļ·āđāļāļāļāļ°āļāļąāļāđāļāđāļāļąāļāļāļ°āļāļĢāļąāļ āđāļĨāļ°āļāļąāļāļāļģāļāļąāļ§āđāļāđāļ āđāļāļĄāļāļāđāļāļēāđāļ§āđāđāļāļĒāļāļąāđāļāđāļŦāđāđāļāđāļ false āđāļ§āđāļāđāļāļ
private void Start()
{
cardA.onClick.AddListener(() => OnCardClick(cardA));
//Debug.Log(cardA.onClick.GetPersistentEventCount());
cardB.onClick.AddListener(() => OnCardClick(cardB));
cardC.onClick.AddListener(() => OnCardClick(cardC));
}
private void Update()
{
if (IsGameEnded())
{
blackbox.gameObject.SetActive(false);
}
}
āļāđāļāļĄāļēāđāļĢāļēāļāļ°āļĄāļēāļŠāļĢāđāļēāļāļĨāļģāļāļąāļāļāļēāļĢāļāļģāļāļēāļ āđāļĄāļ·āđāļāđāļāļĄāđāļĢāļīāđāļĄāļāđāļāļāļąāļ āđāļāļĒāļāļąāđāļāđāļ§āđāļ§āđāļē āđāļĄāļ·āđāļāļāļđāđāđāļĨāđāļ āļāļĨāļīāļāļāļēāļĢāđāļ āđāļŦāđāļāļģāļāļēāļĢāļāļāļāļŠāļāļāļ āđāļāļĒāļ§āļīāļāļĩāļāļāļŠāļāļāļāđāđāļāđāđāļāđāļāļģāļŠāļąāđāļ Debug.Log āļāļķāđāļāļĄāļēāđāļāļ·āđāļāļāļĢāļ§āļāļŠāļāļāđāļĨāļ°āđāļāļŠāđāļ§āļāļāļāļāļāļąāļāļāđāļāļąāļ Update() āļāđāđāļāđāļāļąāđāļāđāļāļ·āđāļāļāđāļāđāļ§āđāļ§āđāļēāļāđāļēāđāļāļĄāļāļāđāļŦāđāđāļāļīāļāļāļĨāđāļāļāļāļģāđāļāļĨāļĒ āļāļāļāļĄāļē
private void OnCardClick(Button selectedCard)
{
Debug.Log("clicked");
if (gameEnded)
{
return; // Ignore clicks after the game has ended
}
CardButton cardButton = selectedCard.GetComponent();
if (cardButton != null)
{
cardButton.ShowCardResult(cardButton.isCorrectCard);
}
}
public bool IsGameEnded()
{
return gameEnded;
}
public void SetGameEnded(bool value)
{
gameEnded = value;
}
public Sprite GetWinSprite()
{
return winSprite;
}
public Sprite GetLoseSprite()
{
return loseSprite;
}
public void Trigger_card()
{
cardShuffler.Trigger_shuffle();
}
}
āļŠāđāļ§āļāļāđāļāļĄāļēāļāļ°āđāļāđāļāļāļąāļāļāđāļāļąāļ OnCardClick() āļāļĩāđāđāļāđāļāļĢāļ§āļāļŠāļāļāļāļēāļĢāļāļĢāļ°āļāļģāđāļĨāļ·āļāļāļāļēāļĢāđāļāļāļāļāļāļđāđāđāļĨāđāļ
āđāļĨāļ°āļŠāđāļ§āļāļāļĩāđāđāļŦāļĨāļ·āļāļāđāļāļ°āđāļāđāļāļāļēāļĢāđāļĢāļĩāļĒāļāđāļāđ Return āđāļāļāļāļąāđāļ§āđāļāđāļĨāļĒāļāļĢāļąāļ āļāļīāļāļāđāļēāļĒāļāđāļ§āļĒāļāļąāļāļāđāļāļąāļ Triger_card() āļāļĩāđāđāļĢāļĩāļĒāļāđāļāđāđāļŦāđāđāļĄāļ·āđāļāđāļĢāļīāđāļĄāđāļāļĄāđāļĢāļīāđāļĄāļŠāļĨāļąāļāļāļģāđāļŦāļāđāļāļāļēāļĢāđāļāļāļļāļāļāļĢāļąāđāļ āļāđāļēāđāļŠāļĢāđāļāđāļĢāļĩāļĒāļāļĢāđāļāļĒāđāļĨāđāļ§āđāļāđāļāļāļąāļ§āđāļāđāļĄāļāđāļāļ°āđāļāđāļŦāļāđāļēāļāļēāđāļāļāļāļĩāđāđāļĨāļĒāļāļĢāļąāļ
using UnityEngine;
using UnityEngine.UI;
public class GameManagers : MonoBehaviour
{
public CardShuffler cardShuffler;
public GameObject blackbox;
public Image resultImage;
public Button cardA;
public Button cardB;
public Button cardC;
public Sprite winSprite; // Assign the win sprite in the Inspector
public Sprite loseSprite; // Assign the lose sprite in the Inspector
public bool gameEnded = false;
private void Start()
{
cardA.onClick.AddListener(() => OnCardClick(cardA));
//Debug.Log(cardA.onClick.GetPersistentEventCount());
cardB.onClick.AddListener(() => OnCardClick(cardB));
cardC.onClick.AddListener(() => OnCardClick(cardC));
}
private void Update()
{
if (IsGameEnded())
{
blackbox.gameObject.SetActive(false);
}
}
private void OnCardClick(Button selectedCard)
{
Debug.Log("clicked");
if (gameEnded)
{
return; // Ignore clicks after the game has ended
}
CardButton cardButton = selectedCard.GetComponent();
if (cardButton != null)
{
cardButton.ShowCardResult(cardButton.isCorrectCard);
}
}
public bool IsGameEnded()
{
return gameEnded;
}
public void SetGameEnded(bool value)
{
gameEnded = value;
}
public Sprite GetWinSprite()
{
return winSprite;
}
public Sprite GetLoseSprite()
{
return loseSprite;
}
public void Trigger_card()
{
cardShuffler.Trigger_shuffle();
}
}
3. āđāļāļĩāļĒāļāđāļāđāļāđāļāļŠāđāļ§āļ GameManager āļāļąāļ§āļāļ§āļāļāļļāļĄāļāļēāļĢāđāļĨāđāļāđāļāļĄāļŦāļĨāļąāļ
using UnityEngine;
using UnityEngine.UI;
public class GameManagers : MonoBehaviour
{
public CardShuffler cardShuffler;
public GameObject blackbox;
public Image resultImage;
public Button cardA;
public Button cardB;
public Button cardC;
public Sprite winSprite; // Assign the win sprite in the Inspector
public Sprite loseSprite; // Assign the lose sprite in the Inspector
public bool gameEnded = false;
āļŦāļĄāļēāļĒāđāļŦāļāļļ āļāļēāļāļāļĄāļāļĢāļ°āļāļēāļĻāđāļāđāļ GameManagers āđāļāļīāļĄ s āļāļ°āļāļĢāļąāļāđāļāļ·āđāļāļāļāđāļ§āļĒāļāļ·āđāļ GameManager āđāļĄāđāļŠāļēāļĄāļēāļĢāļāđāļāđāđāļāđāđāļāļĢāļēāļ°āđāļāđāļ Global
āļĄāļēāļāļąāļāļāļĩāđāļŠāđāļ§āļāđāļĢāļāļāļąāļāļāđāļāļāļāļ°āļāļĢāļąāļ āđāļĢāļēāļāļ°āļāļĢāļ°āļāļēāļĻāļŠāļĢāđāļēāļ Object āļāļĨāđāļāļāļāļģāļāļķāđāļāļĄāļē āļāļąāļ Image āļŠāļģāļŦāļĢāļąāļāđāļāļĄāļĢāļđāļāļāļēāļĢāđāļāđāļāļĨāļĒāđāļĨāļ° Button āļāļāļāļāļēāļĢāđāļāļāļąāđāļ 3 āđāļ āļĢāļ§āļĄāđāļāļāļķāļāļĢāļđāļāļ āļēāļāđāļĄāļ·āđāļāļāļāļ°āļāļąāļāđāļāđāļāļąāļāļāļ°āļāļĢāļąāļ āđāļĨāļ°āļāļąāļāļāļģāļāļąāļ§āđāļāđāļ āđāļāļĄāļāļāđāļāļēāđāļ§āđāđāļāļĒāļāļąāđāļāđāļŦāđāđāļāđāļ false āđāļ§āđāļāđāļāļ
private void Start()
{
cardA.onClick.AddListener(() => OnCardClick(cardA));
//Debug.Log(cardA.onClick.GetPersistentEventCount());
cardB.onClick.AddListener(() => OnCardClick(cardB));
cardC.onClick.AddListener(() => OnCardClick(cardC));
}
private void Update()
{
if (IsGameEnded())
{
blackbox.gameObject.SetActive(false);
}
}
āļāđāļāļĄāļēāđāļĢāļēāļāļ°āļĄāļēāļŠāļĢāđāļēāļāļĨāļģāļāļąāļāļāļēāļĢāļāļģāļāļēāļ āđāļĄāļ·āđāļāđāļāļĄāđāļĢāļīāđāļĄāļāđāļāļāļąāļ āđāļāļĒāļāļąāđāļāđāļ§āđāļ§āđāļē āđāļĄāļ·āđāļāļāļđāđāđāļĨāđāļ āļāļĨāļīāļāļāļēāļĢāđāļ āđāļŦāđāļāļģāļāļēāļĢāļāļāļāļŠāļāļāļ āđāļāļĒāļ§āļīāļāļĩāļāļāļŠāļāļāļāđāđāļāđāđāļāđāļāļģāļŠāļąāđāļ Debug.Log āļāļķāđāļāļĄāļēāđāļāļ·āđāļāļāļĢāļ§āļāļŠāļāļāđāļĨāļ°āđāļāļŠāđāļ§āļāļāļāļāļāļąāļāļāđāļāļąāļ Update() āļāđāđāļāđāļāļąāđāļāđāļāļ·āđāļāļāđāļāđāļ§āđāļ§āđāļēāļāđāļēāđāļāļĄāļāļāđāļŦāđāđāļāļīāļāļāļĨāđāļāļāļāļģāđāļāļĨāļĒ āļāļāļāļĄāļē
private void OnCardClick(Button selectedCard)
{
Debug.Log("clicked");
if (gameEnded)
{
return; // Ignore clicks after the game has ended
}
CardButton cardButton = selectedCard.GetComponent();
if (cardButton != null)
{
cardButton.ShowCardResult(cardButton.isCorrectCard);
}
}
public bool IsGameEnded()
{
return gameEnded;
}
public void SetGameEnded(bool value)
{
gameEnded = value;
}
public Sprite GetWinSprite()
{
return winSprite;
}
public Sprite GetLoseSprite()
{
return loseSprite;
}
public void Trigger_card()
{
cardShuffler.Trigger_shuffle();
}
}
āļŠāđāļ§āļāļāđāļāļĄāļēāļāļ°āđāļāđāļāļāļąāļāļāđāļāļąāļ OnCardClick() āļāļĩāđāđāļāđāļāļĢāļ§āļāļŠāļāļāļāļēāļĢāļāļĢāļ°āļāļģāđāļĨāļ·āļāļāļāļēāļĢāđāļāļāļāļāļāļđāđāđāļĨāđāļ
āđāļĨāļ°āļŠāđāļ§āļāļāļĩāđāđāļŦāļĨāļ·āļāļāđāļāļ°āđāļāđāļāļāļēāļĢāđāļĢāļĩāļĒāļāđāļāđ Return āđāļāļāļāļąāđāļ§āđāļāđāļĨāļĒāļāļĢāļąāļ āļāļīāļāļāđāļēāļĒāļāđāļ§āļĒāļāļąāļāļāđāļāļąāļ Triger_card() āļāļĩāđāđāļĢāļĩāļĒāļāđāļāđāđāļŦāđāđāļĄāļ·āđāļāđāļĢāļīāđāļĄāđāļāļĄāđāļĢāļīāđāļĄāļŠāļĨāļąāļāļāļģāđāļŦāļāđāļāļāļēāļĢāđāļāļāļļāļāļāļĢāļąāđāļ āļāđāļēāđāļŠāļĢāđāļāđāļĢāļĩāļĒāļāļĢāđāļāļĒāđāļĨāđāļ§āđāļāđāļāļāļąāļ§āđāļāđāļĄāļāđāļāļ°āđāļāđāļŦāļāđāļēāļāļēāđāļāļāļāļĩāđāđāļĨāļĒāļāļĢāļąāļ
using UnityEngine;
using UnityEngine.UI;
public class GameManagers : MonoBehaviour
{
public CardShuffler cardShuffler;
public GameObject blackbox;
public Image resultImage;
public Button cardA;
public Button cardB;
public Button cardC;
public Sprite winSprite; // Assign the win sprite in the Inspector
public Sprite loseSprite; // Assign the lose sprite in the Inspector
public bool gameEnded = false;
private void Start()
{
cardA.onClick.AddListener(() => OnCardClick(cardA));
//Debug.Log(cardA.onClick.GetPersistentEventCount());
cardB.onClick.AddListener(() => OnCardClick(cardB));
cardC.onClick.AddListener(() => OnCardClick(cardC));
}
private void Update()
{
if (IsGameEnded())
{
blackbox.gameObject.SetActive(false);
}
}
private void OnCardClick(Button selectedCard)
{
Debug.Log("clicked");
if (gameEnded)
{
return; // Ignore clicks after the game has ended
}
CardButton cardButton = selectedCard.GetComponent();
if (cardButton != null)
{
cardButton.ShowCardResult(cardButton.isCorrectCard);
}
}
public bool IsGameEnded()
{
return gameEnded;
}
public void SetGameEnded(bool value)
{
gameEnded = value;
}
public Sprite GetWinSprite()
{
return winSprite;
}
public Sprite GetLoseSprite()
{
return loseSprite;
}
public void Trigger_card()
{
cardShuffler.Trigger_shuffle();
}
}
4. āđāļāļĩāļĒāļāđāļāđāļ āđāļāļŠāđāļ§āļāļāļāļāļāļĨāļēāļŠ CardShuffler āļŠāļģāļŦāļĢāļąāļāļŠāļĨāļąāļāļāļģāđāļŦāļāđāļāļāļēāļĢāđāļāđāļāļĒāđāļāļŠāđāļ§āļāļāļĩāđāđāļĢāļēāļāļ°āļāđāļāļ
āļāļģāļāļēāļĢāļāļĢāļ°āļāļēāļĻāļŠāļĢāđāļēāļ Image āļāļķāđāļāļĄāļē 3 āļāļąāļ§āđāļāļ·āđāļāđāļ§āđāđāļāđāđāļāđāļāļāļģāđāļŦāļāđāļāļāļēāļĢāđāļāđāļāđāļĨāļ°āđāļ āđāļĨāļ°āļŠāļĢāđāļēāļāļāļąāļāļāđāļāļąāļ StoreStartingPositions() āļāļĩāđāļāļąāļāļāļģāđāļŦāļāđāļāļāļāļāļāļēāļĢāđāļāđāļāđāļĨāļ°āđāļ
using UnityEngine;
public class CardShuffler : MonoBehaviour
{
public RectTransform[] cards;
private Vector2[] startingPositions;
public GameObject CardA;
public GameObject CardB;
public GameObject CardC;
private void StoreStartingPositions()
{
startingPositions = new Vector2[3];
startingPositions[0] = CardA.transform.position;
startingPositions[1] = CardB.transform.position;
startingPositions[2] = CardC.transform.position;
}
āļāļąāđāļāļāđāļāļĄāļēāđāļŦāđāļŠāļĢāđāļēāļ āļāļąāļāļāđāļāļąāļ Shufflecards() āļāļķāđāļāļĄāļē āđāļāļ·āđāļāļŠāļĨāļąāļāļāļģāđāļŦāļāđāļāļāļāļāļāļēāļĢāđāļāđāļāđāļĨāļ°āđāļ āđāļĨāļ°āļāļēāļĄāļāđāļ§āļĒāļāļąāļāļāđāļāļąāļ UpdateCardPostions() āļāļĩāđāđāļāđāļŠāļļāđāļĄāļāļģāđāļŦāļāđāļāđāļāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāđāļāļĒāļāđāļēāļāļāļīāļāļāļēāļāļāļģāđāļŦāļāđāļāļāļēāļĢāđāļāđāļāđāļĨāļ°āđāļāđāļŦāđāļŠāļĨāļąāļāļāļĩāđāļāļąāļ
private void ShuffleCards()
{
Vector2 tempPosition = startingPositions[0];
startingPositions[0] = startingPositions[2];
startingPositions[2] = tempPosition;
}
private void UpdateCardPositions()
{
int n = cards.Length;
while (n > 1)
{
n--;
int k = Random.Range(0, n + 1);
Vector2 tempPosition = cards[k].anchoredPosition;
cards[k].anchoredPosition = cards[n].anchoredPosition;
cards[n].anchoredPosition = tempPosition;
}
}
āļāļīāļāļāđāļēāļĒāļāļąāļāļāđāļ§āļĒāļāļēāļĢāļŠāļĢāđāļēāļāļāļąāļāļāđāļāļąāļ Trigger_shuffle() āđāļāļ·āđāļāđāļĢāļĩāļĒāļāđāļāđ āļāļąāļāļāđāļāļąāļāļāđāļēāļāđāļāļĩāđāđāļĢāļēāđāļāđāđāļāļĩāļĒāļāļāļķāđāļāļĄāļē āđāļāļĒāđāļŦāđāļĨāļģāļāļąāļāđāļāļāļēāļĢāļāļģāļāļēāļāđāļāļēāđāļ§āđ āđāļĨāļ°āļĄāļĩ Debug.Log āđāļ§āđāļŠāļģāļŦāļĢāļąāļāļāļāļŠāļāļāļāļēāļĢāļāļģāļāļēāļāļāļļāļāļāļĢāļąāđāļāļāļĩāđāļĢāļąāļāļ§āđāļē āļĄāļąāļāļāļģāļāļēāļāđāļāđāļāļāļāļīāļŦāļĢāļ·āļāđāļĄāđ
public void Trigger_shuffle()
{
StoreStartingPositions();
ShuffleCards();
UpdateCardPositions();
Debug.Log("full"); //āļŠāļģāļŦāļĢāļąāļāđāļāđāļ Debug āļ§āđāļēāļāļģāļāļēāļāđāļŦāļĄ
}
}
āđāļĄāļ·āđāļāđāļāļ·āđāļāļāđāļāļļāļāļāļāļāļģāđāļŠāļĢāđāļāđāļĨāđāļ§āļāđāđāļāđāļāļāļąāđāļāļŦāļĄāļāļāļĢāļ°āļĄāļēāļāļāļĩāđ āļŦāļĢāļ·āļāđāļāļĢāļāļĒāļēāļāļāļĢāļąāļāđāļāđāļāđāļāļīāđāļĄāđāļāļīāļĄāļāļ°āđāļĢāļāđāļĨāļāļāļāļđāđāļāđāļāļ°āļāļĢāļąāļ
using UnityEngine;
public class CardShuffler : MonoBehaviour
{
public RectTransform[] cards;
private Vector2[] startingPositions;
public GameObject CardA;
public GameObject CardB;
public GameObject CardC;
private void StoreStartingPositions()
{
startingPositions = new Vector2[3];
startingPositions[0] = CardA.transform.position;
startingPositions[1] = CardB.transform.position;
startingPositions[2] = CardC.transform.position;
}
private void ShuffleCards()
{
Vector2 tempPosition = startingPositions[0];
startingPositions[0] = startingPositions[2];
startingPositions[2] = tempPosition;
}
private void UpdateCardPositions()
{
int n = cards.Length;
while (n > 1)
{
n--;
int k = Random.Range(0, n + 1);
Vector2 tempPosition = cards[k].anchoredPosition;
cards[k].anchoredPosition = cards[n].anchoredPosition;
cards[n].anchoredPosition = tempPosition;
}
}
public void Trigger_shuffle()
{
StoreStartingPositions();
ShuffleCards();
UpdateCardPositions();
Debug.Log("full"); //āļŠāļģāļŦāļĢāļąāļāđāļāđāļ Debug āļ§āđāļēāļāļģāļāļēāļāđāļŦāļĄ
}
}
āđāļĄāļ·āđāļāđāļāļ·āđāļāļāđāđāļāļĩāļĒāļ Script āļāļĩāđāđāļŠāļĢāđāļāđāļĨāđāļ§āļāļĒāđāļēāļĨāļ·āļĄāđāļāđāļĢāļĩāļĒāļāđāļāđ Script āđāļ Holder card āļāļĩāđāļāļąāļāđāļāđāļāļāļļāļāļāļēāļĢāđāļāļāļąāđāļ 3 āđāļāđāļ§āđāļāđāļ§āļĒāļāļ°āļāļĢāļąāļāđāļāļ·āđāļāđāļŦāđ shuffle āļāļģāļāļēāļāđāļāđ
āļāļĨāļĨāļąāļāļāđāļāļāļ°āđāļāđāļāļĢāļ°āļĄāļēāļāļāļĩāđāđāļĨāļĒ āđāļĄāļ·āđāļāđāļĢāļīāđāļĄāđāļĨāđāļāđāļŦāļĄāđāđāļāđāļĨāļ°āļāļĢāļąāđāļ āļāļģāđāļŦāļāđāļāļāļēāļĢāđāļāļāļ°āļāļđāļāļŠāļĨāļąāļāļāļļāļāļāļĢāļąāđāļ
āđāļĄāļ·āđāļāđāļāļĩāļĒāļ Scripts CardButton āđāļŠāļĢāđāļāđāļĨāđāļ§āļāļĒāđāļēāļĨāļ·āļĄ āļāļģāđāļāļāļđāļāļāļąāļ āļāļąāļ§āļāļēāļĢāđāļāđāļāđāļĨāļ°āđāļāļāļĩāđāļŠāļĢāđāļēāļāđāļ§āđāļāđāļ§āļĒāļāļ° āđāļāļ·āđāļāđāļŦāđ Scripts āđāļāđāļāļēāļāđāļāđ
using UnityEngine;
using UnityEngine.UI;
public class CardButton : MonoBehaviour
{
public GameManagers gameManager;
public Image resultImage;
public bool isCorrectCard;
public Button Button_play;
āļŠāļĢāđāļēāļāļāļąāļāļāđāļāļąāļ ShowCardResult() āļāļķāđāļāļĄāļēāđāļāļ·āđāļāđāļ§āđāđāļāđāļāļĢāļ§āļāļŠāļāļāļ§āđāļēāļāļēāļĢāđāļāļāļĩāđāļāļđāđāđāļĨāđāļāđāļĨāļ·āļāļāļāļąāđāļāļāļĢāļāļāļąāļāđāļāļĨāļŦāļĢāļ·āļāđāļĄāđāļāđāļēāļāļĢāļāļāđāļāļ°āļāļģāļāļēāļāđāļāđāļāļ·āđāļāļāđāļāļāļĩāđāđāļĢāļēāđāļāđāļāļąāđāļāđāļāļēāđāļ§āđ
public void ShowCardResult(bool isCorrect)
{
Debug.Log("clicked");
if (isCorrect)
{
resultImage.sprite = gameManager.GetWinSprite();
Debug.Log("You win!");
}
else
{
resultImage.sprite = gameManager.GetLoseSprite();
Debug.Log("You lose!");
}
resultImage.gameObject.SetActive(true);
gameManager.SetGameEnded(true);
}
}
āļŠāļģāļŦāļĢāļąāļāđāļāđāļāļāļąāđāļāļŦāļĄāļāļāļāļāļŠāđāļ§āļāļŠāļļāļāļāđāļēāļĒāļāđāļēāđāļŠāļĢāđāļāđāļĢāļĩāļĒāļāļĢāđāļāļĒāļāđāļāļ°āđāļāđāđāļāļāļāļĩāđāđāļĨāļĒāļāļĢāļąāļ
using UnityEngine;
using UnityEngine.UI;
public class CardButton : MonoBehaviour
{
public GameManagers gameManager;
public Image resultImage;
public bool isCorrectCard;
public Button Button_play;
public void ShowCardResult(bool isCorrect)
{
Debug.Log("clicked");
if (isCorrect)
{
resultImage.sprite = gameManager.GetWinSprite();
Debug.Log("You win!");
}
else
{
resultImage.sprite = gameManager.GetLoseSprite();
Debug.Log("You lose!");
}
resultImage.gameObject.SetActive(true);
gameManager.SetGameEnded(true);
}
}
āļāļĒāđāļēāļĨāļ·āļĄ āđāļāđāļĢāļĩāļĒāļāđāļāđ āđāļāđāļāļāļĩāđāđāļāļĩāļĒāļāļĄāļē āļāđāļ§āļĒāļāļ°āļāļĢāļąāļāđāļ Unity āđāļ Object āđāļāđāļĨāļ°āļāļąāļ§āļ§āđāļēāđāļāđāļāļ°āđāļĢāļāđāļēāļāļāđāđāļĢāļĩāļĒāļāđāļāđāļāļēāļĄāļ āļēāļāđāļāđāđāļĨāļĒāļāļ°āļāļĢāļąāļ āđāļāđāļ āļāļēāļĢāđāļāđāļāđāļĨāļ°āđāļ , āļāļēāļĢāđāļāđāļāļĨāļĒ āļĢāļ§āļĄāđāļāļāļķāļ GameManager āļāļĩāđāđāļāđāļāļāļąāļ§āļāļģāđāļāļīāļāđāļāļĄāļāđāļ§āļĒāļāļ°āļāļĢāļąāļ
āļāļąāđāļāļāļāļāļāļĩāđ 4 : āļāļāļĨāļāļāđāļĨāđāļāđāļĨāļ°āļāļĢāļ§āļāļŠāļāļāļāļēāļĢāļāļģāļāļēāļāļāļāļāđāļāļĄ
āđāļāļēāļĨāļ°āļāđāļēāļāđāļēāļāļĄāļēāļāļķāļāļāļąāđāļāļāļāļāļāļĩāđāļāđāđāļĄāđāļĄāļĩāļāļ°āđāļĢāļĄāļēāļāđāļĨāđāļ§ āļāļāļāļāļļāļāļāļĩāđāđāļŦāļāļ·āđāļāļĒāļĒāļēāļāļāļąāļāļĄāļēāļāļ°āļāļĢāļąāļ
āļāļąāđāļāļāļāļāļāļĩāđāđāļĢāļēāļāđāļāļ°āļāļģāļāļēāļĢāļāļāļŠāļāļāļāļąāļ§āđāļāļĄ Guess Card āļāļąāļ
- āļāļģāļāļēāļāđāļāđāļāļāļāļīāđāļŦāļĄ
- āļĄāļĩāļāļąāļāļŦāļēāļāļĢāļāđāļŦāļāļŦāļĢāļ·āļāđāļĄāđ
- āļāļāļĨāļāļāļāļĨāđāļāļĒ āđāļāļĄ āđāļŦāđāđāļāļ·āđāļāļāđ āļŦāļĢāļ·āļāļāļāļĢāļđāđāļāļąāļāđāļĨāđāļāļāļđ āđāļāļ·āđāļāļŦāļē Feedback āļĄāļēāļāļąāļāļāļēāđāļāļĄāđāļŦāđāļāļĩāļāļķāđāļ
āđāļāļĒāļāļĩāđāļāļ°āđāļāđāļ interface āđāļāļāļąāļ§āđāļāļĄāđāļāļāļāđāļē Player āļāļāļāļāļđāļāļāļ°āļāļĢāļąāļ āļŠāđāļ§āļāļŦāļāđāļēāļāļāļāļāļīāļ āļāđāļēāļāļĒāļēāļāļĢāļđāđāļāđāđāļāļĨāļāļ āđāļŦāļĨāļāļĄāļēāļāļāļŠāļāļāđāļĨāđāļāļāļąāļāļāļđāđāļāđāļāļ°āļāļĢāļąāļ āđāļĨāļ°āļŠāļģāļŦāļĢāļąāļāļāļļāļāļāļāļāļĩāđāļĄāļēāļāļķāļāļāļąāđāļāļāļāļāļāļĩāđāļāđāļāļ°āđāļāđ Guess Card Game āļāļąāļāđāļĨāđāļ§
āļŠāļģāļŦāļĢāļąāļ āļāļāļāļĩāđāļŠāļāđāļāļāļĒāļēāļāļāļ°āļāļĢāļąāļāļāļĢāļļāļāļŦāļĢāļ·āļāļāļģāđāļāļāļąāļāļāļēāļāđāļāļāđāļŠāļēāļĄāļēāļĢāļāļāļģāđāļāđāđāļĨāļĒ āđāļāļĒāļāļēāļāļāļĄāļāļ°āļāļīāđāļāļĨāļīāļāļāđāļāļąāļ§āđāļāļĄāđāļ§āđāđāļŦāđāļŠāļģāļŦāļĢāļąāļāđāļāļĢāļāļĩāđāļāļĒāļēāļāļāļģāđāļāļŠāļēāļāļāđāļāļāđāđāļāļīāļāđāļĨāļĒāļāļĢāļąāļāļāļĄ āļāđāļēāđāļāļĢāļĄāļĩāļāļąāļāļŦāļēāļŦāļĢāļ·āļāļĒāļąāļāđāļāļāđāļĄāļē āļāļąāļāđāļāļ āđāļŦāđāļāļĢāļēāļāļāļąāļāđāļāđāļāļ°āļāļĢāļąāļ āđāļāđāļāđāļāļāļāļ°āļāļēāļāļāļąāļāđāļāđāļ§āļ°āļĄāļēāđāļāļ°āļāļģāđāļāļ§āļāļēāļāļāđāļāļĒāļāļāđāļāļīāđāļĄāđāļāļīāļĄāļāļĩāļāļŠāļąāļāļŦāļāđāļāļĒ āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāđāļŠāļĢāļīāļĄāļāļąāļ§āđāļāļĄāļāđāļ§āļĒāļāļēāļĢāđāļāđ Animation āđāļŦāđāđāļāļĄāļāļđāļāđāļēāđāļĨāđāļāļĄāļēāļāļāļķāđāļ āļāļ°āļĄāļĩāļ§āļīāļāļĩāļāļēāļĢāļāļąāļāļāļĩāđ
1. Animation āļāļēāļĢāđāļāļīāļāļāļēāļĢāđāļāđāļāļĨāļĒ āđāļāļĒāļāļēāļĢāļāļĨāļīāļāļāļĩāđ Choice Animator āļāļĩāđāđāļĢāļēāļŠāļĢāđāļēāļāļĄāļē āđāļĨāļ°āļāļĨāļīāļ Animation â āļāļāļāļļāđāļĄāļāļąāļ āļāļ°āđāļāđāđāļāđāļ Animation āļāļāļāđāļāļīāļāļāļēāļĢāđāļāđāļāļĨāļĒāļāļĢāļēāļ§āđāļāļĢāļ°āļĄāļēāļāļāļĩāđāļāļĢāļąāļāđāļāļ·āđāļāđāļŦāđāđāļāđāļēāđāļāđāļāļ°āļāļģāđāļŦāđāļāļđāļāļĨāļīāļ
(7) How To Build Rock Paper Scissors Game | Unity Tutorial – YouTube āđāļāļīāđāļĄāđāļāļīāļĄāđāļāđāļāļĢāļąāļāđāļāļ·āđāļāđāļŦāđāđāļāđāļēāđāļāļāļąāļāđāļāļāļāļķāđāļ āđāļĢāļīāđāļĄāļāļĩāđāļ§āļīāļāļēāļāļĩ 12.45 āļāļ°āļāļĢāļąāļ
2. Animation āļāļēāļĢāđāļāļāļāļāđāļĢāļīāđāļĄ Game āļāļĩāđāļāļĢāđāļāļĄāļāļąāļ Shuffle āļŠāļēāļĄāļēāļĢāļāļāļģāđāļāđāļāđāļ§āļĒāļāļēāļĢ āļŠāļĢāđāļēāļ empty object āļāļķāđāļāļĄāļēāđāļĨāđāļ§āļāļģāļāļēāļĢāļĒāđāļēāļĒ UI Button āļāļēāļĢāđāļ 3 āđāļāđāļāđāļ§āđāđāļāļāļąāđāļāđāļĨāļ° set Animation āđāļāđāđāļĨāļĒ āļāļāļēāļāļāļąāđāļāđāļŦāđāđāļāļ·āđāļāļāđāļāļĨāļīāļāļāļ§āļēāļāļĩāđ frame āļŠāļļāļāļāđāļēāļĒāļāļāļ Animation āđāļĨāđāļ§āļāļģāļāļēāļĢāđāļĨāļ·āļāļ Add Animation Event āđāļĨāđāļ§āļāļģ Scripts CardShuffler (Trigger_shuffle) āđāļāđāļŠāđ āđāļāđāļēāļāļĩāđāļāđāđāļŠāļĢāđāļāļŠāļīāđāļāļāļĢāļąāļ
āļāļēāļāļāļąāđāļāđāļŦāđāđāļāļ·āđāļāļāđāļāļĨāļīāļāļāļ§āļēāļāļĩāđ frame āļŠāļļāļāļāđāļēāļĒāļāļāļ Animation āđāļĨāđāļ§āļāļģāļāļēāļĢāđāļĨāļ·āļāļ Add Animation Event āđāļĨāđāļ§āļāļģ Scripts CardShuffler (Trigger_shuffle) āđāļāđāļŠāđāđāļāđāļēāļāļĩāđāļāđāđāļŠāļĢāđāļāļŠāļīāđāļāļāļĢāļąāļ
āđāļāļ§āļāļēāļāļāļĩāđ 2 āļŠāļģāļŦāļĢāļąāļāđāļāļĢāļāļĩāđāļĨāļāļāļāļģāļāļēāļĄāđāļĨāđāļ§āļāļāļāļąāļāļŦāļē Layout āđāļāļŦāļāđāļēāļāđāļēāļ interface Game āļāļĩāđāđāļŠāļāļāļāļĨāđāļĄāđāļāļĢāļāļāļąāļ Scene āļāļ°āļāļĢāļąāļ āđāļāļ§āļāļēāļāđāļāđāđāļŦāđāđāļāļ·āđāļāļāđāđāļāļāļĢāļāļāļāļēāļāļāļĩāđāđāļŠāļāļāļāļĨāđāļĨāđāļ§āļāļĨāļīāļāđāļ â āđāļĨāļ·āļāļ + â āđāļĨāđāļ§āļāļĢāļ width & height āđāļŦāđāđāļŠāđāļāđāļē 1080×1920 āđāļāļāļ°āļāļĢāļąāļāđāļāđāļēāļāļĩāđāļāđāļāļ°āđāļāđ Layout āļāļĢāļāļāļąāļāđāļāļĢāļđāļāđāļĨāđāļ§
EventSystem : āļŠāļģāļŦāļĢāļąāļāļāļĢāļ§āļāļŠāļāļāļāļēāļĢāļāļģāļāļēāļāđāļāđāļāļĄ āđāļĄāļ·āđāļāļāļ Play āđāļĨāđāļ§āļāļ°āļāļāļ§āđāļē āļāļĨāļĨāļąāļāļāđ Cursor āđāļĄāļēāļŠāđāļāđāļēāļāđ āļĄāļąāļāļŠāļąāļĄāļāļąāļāļāđāļāļąāļāļāļ°āđāļĢ āđāļāļĒāļ§āļīāļāļĩāļāļĩāđ āđāļāđāļāļ§āļīāļāļĩāļāļĩāđāđāļāđāļŠāļģāļŦāļĢāļąāļāđāļāđāđāļ§āļĨāļē āļāļīāļāļāļąāļ āļŦāļĢāļ·āļāđāļĄāļēāļŠāđāđāļĄāđ Detect Object āđāļāļāļēāļāđāļāļĄāļāļ°āļāļĢāļąāļ āđāļāļĒāļāļĄāđāļāđāļ§āļīāļāļĩāļāļĩāđāđāļāđāļāļāļŦāļēāļĒāļāļąāļāļāļĩāđāļĨāļ° āļŪāđāļēâĶ(;w;)
āđāļāļīāđāļĄāđāļāļīāļĄ āļŠāļģāļŦāļĢāļąāļāļĄāļ·āļāđāļŦāļĄāđ : āļŠāļģāļŦāļĢāļąāļāđāļāļĢāļŦāļĨāļēāļĒāđāļāļāļāļĩāđāļŠāļāļŠāļąāļĒāļāļąāļāļ§āđāļēāļāļģāđāļĄ āđāļ§āļĨāļē āđāļāļĩāļĒāļ Code āđāļ VS studio āđāļĨāđāļ§āļāļīāļĄāļāđāļāļģāļŠāļąāđāļāđāļĄāđāļāđāļāļĒāļāļķāđāļ āđāļŦāđāđāļāđāļ§āļīāļāļĩāļāļĩāđ āđāļāļāļĩāđ Unity â edit âpreference -> external tools -> Regenrate project files
āļŦāļĨāļąāļāļāļēāļāļāļąāđāļāđāļŦāđ Restart VS studio āđāļĨāđāļ§āđāļāļīāļāđāļŦāļĄāđāļāļđāļāļ°āļāļĢāļąāļ āđāļĨāļ°āļŠāļģāļŦāļĢāļąāļāđāļāļĢāļāļĩāđāļāļĒāļēāļāđāļāļēāļāļąāļ§āđāļāļĄāđāļāļĻāļķāļāļĐāļēāļāđāļāļŠāļēāļĄāļēāļĢāļāļāļģāļāļēāļĢ fork āđāļāļĢāđāļāļāļāđāđāļāđāļāļĩāđāļĨāļīāļāļāđāļāļĩāđāđāļĨāļĒāļāđāļēāļāļāļ https://github.com/ChairawichZ6/GuessCard-Game-by-FookIT.git ðŧð
āļĢāļ°āļāļāļāļķāļāļāļąāļāļĐāļ° āļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄ
āļāļĩāđāļāļĢāđāļāļĄāļāļĢāļ§āļāļāļĨāļāļēāļāļāļļāļ 24 āļāļąāđāļ§āđāļĄāļ
- āđāļāļāļĒāđāļāļąāļāļŦāļēāļāļ§āđāļē 200 āļāđāļ āļāļĩāđāļĢāļāļāđāļēāļāļēāļĒāļāļļāļāļāļĒāļđāđ
- āļĢāļāļāļĢāļąāļ 9 āļ āļēāļĐāļēāđāļāļĢāđāļāļĢāļĄāļŦāļĨāļąāļ āđāļĄāđāļ§āđāļēāļāļ° Java, Python, C āļāđāđāļāļĩāļĒāļāđāļāđ
- āđāļāđāļāļēāļāđāļāđāļāļĢāļĩ ! āļāļĢāļ 20 āļāđāļāļāļķāđāļāđāļ āļĢāļąāļ Certificate āđāļāđāļĨāļĒ !!