Jump to content
Unity Insider Forum

loui1337

Members
  • Content Count

    18
  • Joined

  • Last visited

Posts posted by loui1337


  1. Okay das hatte ich garnicht bedacht xD. Und jetzt meine wahrscheinlich letze frage zu dem Thema: ich wöllte gern das es nicht rundet sondern eigentlich nur die erste Dezimalstelle anzeigt.

    vor 20 Stunden schrieb Sascha:

    Du kannst bei Math.Round eine Rundungsmethode (aufrunden/abrunden/kaufmännisch) übergeben.

    Wo genau wird denn nicht weitergezählt? Dass nach 1.0K erstmal für 50 Stück nichts kommt ist ja logisch.

     


  2. Das hier ist der andere Code der die zahl einfach nur um 1 erhöht. Mehr Scripts greifen nicht auf die Variable zu.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class makeCookie : MonoBehaviour
    {
    	
    	public void ClickTheButton () {
    		CookieDisplay.CookieCount += 1;
    	}
    }
    

  3. Okay, bei 999 hört es einfach auf 1 auf zu addieren. Hat jemand eine Ahnung warum?

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    using System;
    
    public class CookieDisplay : MonoBehaviour
    {
        //public CookieCount
    	public static double CookieCount;
    	//Text to show the CookieCount
    	public GameObject cookieDisplay;
    	//internal CookieCount
    	public double InternalCookies;
    	public string followingLetter;
    
    
    	
    	public string NumberAndLetter(double number)
    	{
    		double InternalNumber;
    		string followingLetter;
    		if(number >= 1000)
    		{
    			InternalNumber = number / 1000;
    			followingLetter = "K";
    		}
    		else
    		{
    			InternalNumber = number;
    			followingLetter = "";
    		}
    		InternalNumber = Math.Round(InternalNumber, 1);
    		Debug.Log(InternalNumber);
    		return InternalNumber + followingLetter;
    	}
    	
    	void Update (){
    		cookieDisplay.GetComponent<Text>().text = "Cookies: " + NumberAndLetter(CookieCount);
    	}
    }
    

    es hört einfach auf bei 999 drauf zu addieren. Kann mir jemand helfen das es dann wenn es 1200 Cookies beispielsweise sind 1,2K anzeigt? Aber es sollte erst ab 1300 1,3K anzeigen... Es soll also NICHT aufrunden. Ich weiß jetzt echt nicht mehr weiter. 


  4. using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    using System;
    
    public class CookieDisplay : MonoBehaviour
    {
        //public CookieCount
    	public static double CookieCount;
    	//Text to show the CookieCount
    	public GameObject cookieDisplay;
    	//internal CookieCount
    	public double InternalCookies;
    	public string followingLetter;
    
    
    	
    	public string NumberAndLetter(double number)
    	{
    		double InternalNumber;
    		string IfollowingLetter;
    		if(number >= 1000)
    		{
    			InternalNumber = number / 1000;
    			Math.Round(InternalNumber, 1);
    			IfollowingLetter = "K";
    		}
    		
    		else
    		{
    			InternalNumber = number;
    			IfollowingLetter = "";
    		}
    		return InternalNumber + IfollowingLetter;
    
    	}
    	
    	void Update (){
    		cookieDisplay.GetComponent<Text>().text = "Cookies: " + NumberAndLetter(CookieCount);
    	}
    }
    

    das mit der Methode hat schonmal geklappt! Aber wenn es eine zahl ist die mehr als eine Nachkommastelle hat wenn man sie durch 1000 teilt dann steht auf einmal wieder nichts da...


  5. using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    using System;
    
    public class CookieDisplay : MonoBehaviour
    {
        //public CookieCount
    	public static double CookieCount;
    	//Text to show the CookieCount
    	public GameObject cookieDisplay;
    	//internal CookieCount
    	
    
    
    	
    	public string NumberAndLetter(double number)
    	{
    		double InternalNumber;
    		string IfollowingLetter;
    		if(number >= 1000)
    		{
    			InternalNumber = number / 1000;
    			Math.Round(InternalNumber, 1);
    			string IfollowingLetter = "K";
    		}
    		
    		else if(number >= 0)
    		{
    			InternalNumber = number;
    			IfollowingLetter = "";
    		}
    		return InternalNumber + IfollowingLetter;
    
    	}
    	
    	void Update (){
    		cookieDisplay.GetComponent<Text>().text = "Cookies: " + NumberAndLetter(CookieCount);
    	}
    }
    

    Fehlermeldungen : Assets\Scripts\CookieDisplay.cs(27,11): error CS0136: A local or parameter named 'IfollowingLetter' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter

    Assets\Scripts\CookieDisplay.cs(35,10): error CS0165: Use of unassigned local variable 'InternalNumber'

    Assets\Scripts\CookieDisplay.cs(35,27): error CS0165: Use of unassigned local variable 'IfollowingLetter'


  6. Okay vielen Dank, aber mein ziel war eigentlich das es nur eine Nachkommastelle ausgibt... da wird es ja ohne Nachkommastelle ausgegeben. Zweites Problem: ich hab schon so viel versucht aber es gibt immer einen Fehler aus wenn ich versuche die zahl in der  umgewandelt in einem string zurück zugeben. Das ich dann dort im Textfeld nur noch "Cookies: " + methode(Cookies); 


  7. Moin Moin alle zusammen!

    Ich bin ein ziemlicher Anfänger in Unity und C# und hätte da mal eine Frage:

    Wie man es von den Typischen Clicker Spielen kennt, wird einem nicht die genaue Anzahl an z.B. Cookies angezeigt, sondern eine art Abkürzung wie zum beispiel anstatt 100.000.000 Cookies nur 100M Cookies. Das habe ich auch versucht, bin aber gescheitert... könnte mir da vielleicht jemand helfen?

    if(CookieCount >= 1000000)
    		{
    			InternalCookies = CookieCount / 1000000;
    			followingLetter = "M";
    		}
    		
    		else if(CookieCount >= 0)
    		{
    			InternalCookies = CookieCount;
    			followingLetter = "";
    		}

    Allerdings zeigt er bei mir ab 100001 nichts mehr an... man muss dazusagen das InternalCookies und CookieCount doubles sind. Am besten fände ich es, wenn man in eine Methode eine Zahl eingibt und diese dann Verändert mit Buchstabe zurückgibt... Daran habe ich mich auch schon versucht, bin aber auch gescheitert! 

    Ich hoffe das mir da jemand helfen kann:)

    Lg Loui


  8. Moin!

    Ich hätte da noch eine Frage wegen meinem Kleinem Spiel:
    Ich möchte gerne das man erst ein GameObject auswählt und man anschließend weitere Events machen kann... bei mir geht es nachdem ich darauf geklickt sofort los und die Methode wird ausgeführt... Kann mir da jemand helfen?

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Newplatform : MonoBehaviour
    {
        public GameObject Platform;
        void OnMouseDown()
        {
    		StartCoroutine (WaitTime());
    		if (Input.GetMouseButtonDown(0))
            {
                Vector2 screenPosition = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
                Vector2 ClickWorldPosition = Camera.main.ScreenToWorldPoint(screenPosition);
                Debug.Log(ClickWorldPosition);
    			
    			Instantiate(Platform, ClickWorldPosition, transform.rotation);
            }
    	IEnumerator WaitTime()
    	{
    		//Für Wartezeit nach Klick in Zeile 14
    		yield return new WaitForSeconds (1);
    		
    	}
        }
    }

     


  9. Moin Moin, 
    Ich bin ziemlicher Neuling in Unity und C# und habe ein paar Probleme bei der Entwicklung meines ersten kleinen Spiels! Könntet ihr mir da vielleicht weiterhelfen?

    Das Grundprinzip meines Spiels besteht darin, an eine Plattform (Kreis) weitere Plattformen anzuhängen. Das man an die Grundplattform eine weitere Plattform bzw einen weiteren Kreis anhängen kann. Allerdings sollen diese mit einer Linie verbunden sein welche eine Maximallänge hat. Kann mir da vielleicht jemand weiterhelfen wie ich das machen kann?

×
×
  • Create New...