Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by areFranz · Mar 22, 2019 at 04:36 PM · c#2dgamememory

Memory game logic

Hi All! I'm making a 2d memory game with unity. I have an array with 6 + 6 sprites that I randomize and Instantiate in a wall of 4 * 3 sprites. Every sprite has a C# script attached to:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class Card : MonoBehaviour
 {
     public Sprite card;
     public Sprite filledCard;
 
     void Awake()
     {
        this.GetComponent<SpriteRenderer>().sprite = card;
     }
 
     public void ShowCard()
     {
         this.GetComponent<SpriteRenderer>().sprite = filledCard;
     }
 
     public void HideCard()
     {
         this.GetComponent<SpriteRenderer>().sprite = card;
     }
 }

And I have another C# script ah controls the logic of the game:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using System.Text.RegularExpressions;
 
 public class MemoryGame : MonoBehaviour
 {
     public GameObject container;
     public GameObject cards;
 
     public GameObject[] filledCards = new GameObject[12];
 
     public float timer;
     public int count;
     public string cardName = null;  
 
     void Start()
     {
         //InstantiateCards();
         InstantiateFilledCards();
 
         timer = 0.0f;
         count = 0;
     }
 
     void Update()
     {
         RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
 
         if (Input.GetMouseButtonDown(0) && hit.collider != null)
         {
             string card = hit.collider.name;    
             GameObject.Find(hit.collider.name).GetComponent<Card>().ShowCard();
 
             if (cardName != null)
             {
                 string name1 = Regex.Replace(card, @"[\d-]", string.Empty);
                 string name2 = Regex.Replace(cardName, @"[\d-]", string.Empty);
 
                 if (name1 == name2)
                 {
                     Destroy(GameObject.Find(card));
                     Destroy(GameObject.Find(cardName));
                 }
                 cardName = null;
             }
             else
             {
                 cardName = card;
             }
         }
     }
 
     //void InstantiateCards()
     //{
     //    for (int y = 0; y < 3; y++)
     //    {
     //        for (int x = 0; x < 4; x++)
     //        {
     //            GameObject card = Instantiate(cards, new Vector3(x * 3.5f - 5.0f, y * 3.5f - 3.5f, 0.0f), Quaternion.identity) as GameObject;
     //            card.transform.parent = container.transform;
     //        }
     //    }
     //}
 
     void InstantiateFilledCards()
     {
         ShuffleArray(filledCards);
 
         int i = -1;
 
         for (int y = 0; y < 3; y++)
         {
             for (int x = 0; x < 4; x++)
             {
                 i++;
                 GameObject filledCard = Instantiate(filledCards[i], new Vector3(x * 3.5f - 5.0f, y * 3.5f - 3.5f, 0.0f), Quaternion.identity) as GameObject;
                 filledCard.transform.parent = container.transform;
                 filledCard.name = filledCard.GetComponent<SpriteRenderer>().sprite.name + i.ToString();
             }
         }
     }
 
     public static void ShuffleArray<T>(T[] arr)
     {
         for (int i = arr.Length - 1; i > 0; i--)
         {
             int r = Random.Range(0, i + 1);
             T tmp = arr[i];
             arr[i] = arr[r];
             arr[r] = tmp;
         }
     }
 }


Now I have a problem with the update:

         void Update()
         {
             RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
 
             if (Input.GetMouseButtonDown(0) && hit.collider != null)
             {
                 string card = hit.collider.name;    
                 GameObject.Find(hit.collider.name).GetComponent<Card>().ShowCard();
 
                 if (cardName != null)
                 {
                     string name1 = Regex.Replace(card, @"[\d-]", string.Empty);
                     string name2 = Regex.Replace(cardName, @"[\d-]", string.Empty);
 
                     if (name1 == name2)
                     {
                         Destroy(GameObject.Find(card));
                         Destroy(GameObject.Find(cardName));
                     }
                     cardName = null;
                 }
                 else
                 {
                     cardName = card;
                 }
             }
         }
 

If I click over a sprite, it changes from card to filledCard sprite and compares the names without the number, but the cardName in inspector don't change at first click but it changes at second click, so the sprites are not destroyed until a third click...

Any idea?

Comment
Add comment · Show 1
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image toddisarockstar · Mar 22, 2019 at 11:37 PM 0
Share

i usually don't use null for a string comparison. try empty quotes like this "" ins$$anonymous$$d of using null in your start function and when you assign back to empty. not sure but it allways works for me and it looks like that's right where your problem is

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by Casiell · Mar 22, 2019 at 08:09 PM

Don't compare object names. Create a field in your Card class for the name. Better yet use something else for comparing cards, strings are 100% unnecessary here. Integer would be better, depending on what you want you can also use enum.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

652 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

My 2D ball keep falling through ground 1 Answer

Can someone help me with my question with IENumerators in C#? 1 Answer

My 2D ball keep falling through ground 0 Answers

Distribute terrain in zones 3 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges