Jump to content
Unity Insider Forum

F1R3ON

Members
  • Content Count

    55
  • Joined

  • Last visited

  • Days Won

    1

F1R3ON last won the day on November 18 2017

F1R3ON had the most liked content!

Community Reputation

2 Neutral

About F1R3ON

  • Rank
    Advanced Member

Recent Profile Visitors

988 profile views
  1. Hab leider dennoch ein Problem mit Scriptable Objects ^^" "Ich bekomm es nicht hin während der Laufzeit den Bool zu ändern und das in der Liste von LoadAchievement nur das jeweilige Freigeschalten wird." Bzw. wenn man ein Achievement freischaltet soll das jeweilige Gameobject seine Color ändern das klappt aber nicht während der Laufzeit nur wenn man die Szene neustartet. Ich bin mir nicht sicher ob das wirklich der richtige Ansatz bei den Scriptable Objects ist bin für jegliche Verbesserungsvorschläge offen auch bei den for-Schleifen ob da nicht foreach besser wäre? AchievementObject welches für ScriptableObjects using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Collections.Generic; [CreateAssetMenu(fileName = "NewAchievement", menuName = "Achievement/Create Achievement", order = 1)] public class AchievementObject : ScriptableObject { [SerializeField] private Sprite icon; [SerializeField] private string title; [SerializeField] private string description; [SerializeField] private int progValue; [SerializeField] private bool unlocked; [SerializeField] private Image unlockedImage; public Sprite Icon { get { return icon; } } public string Title { get { return title; } } public string Description { get { return description; } } public bool Unlocked { get { return unlocked; } set { unlocked = value; } } public void SaveAchievement(bool value) { unlocked = value; } } AchievementManager using TMPro; using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Collections.Generic; public class AchievementManager : MonoBehaviour { [SerializeField] private AchievementObject[] achievementObject; [SerializeField] private GameObject prefabAchievement; [SerializeField] private GameObject prefabAchievementUnlocked; [SerializeField] private GameObject visualAchievement; [SerializeField] private GameObject parentPanel; [SerializeField] private GameObject parentVisual; private static AchievementManager instance; public static AchievementManager Instance { get { if (instance == null) { instance = GameObject.FindObjectOfType<AchievementManager>(); } return AchievementManager.instance; } } void Start() { LoadAchievement(); } void Update() { if (Input.GetKeyDown(KeyCode.Y)) { EarnAchievement("AAA"); } if (Input.GetKeyDown(KeyCode.X)) { EarnAchievement("BBB"); } } public void LoadAchievement() { for (int x = 0; x < achievementObject.Length; x++) { GameObject achievement = Instantiate(prefabAchievement, new Vector3(0, 0, 0), Quaternion.identity); if (achievementObject[x].Unlocked) { achievement.GetComponent<Image>().color = prefabAchievementUnlocked.GetComponent<Image>().color; } achievement.transform.SetParent(parentPanel.transform); achievement.transform.GetChild(0).GetComponent<Image>().sprite = achievementObject[x].Icon; achievement.transform.GetChild(1).GetComponent<TMP_Text>().text = achievementObject[x].Title; } } public void EarnAchievement(string title) { for (int x = 0; x < achievementObject.Length; x++) { if (title == achievementObject[x].Title && !achievementObject[x].Unlocked) { achievementObject[x].SaveAchievement(true); GameObject achievement = Instantiate(visualAchievement); Sprite icon = achievementObject[x].Icon; SetVisualInfo(parentVisual, achievement, icon, title); StartCoroutine(FadeAchievement(achievement)); } } } public void SetVisualInfo(GameObject parent, GameObject achievement, Sprite icon, string title) { achievement.transform.SetParent(parent.transform); achievement.transform.GetChild(0).GetComponent<Image>().sprite = icon; achievement.transform.GetChild(1).GetComponent<TMP_Text>().text = title; } private IEnumerator FadeAchievement(GameObject achievement) { CanvasGroup canvasGroup = achievement.GetComponent<CanvasGroup>(); float rate = 1.0f / 2; int startAlpha = 0; int endAlpha = 1; for (int i = 0; i < 2; i++) { float progress = 0.0f; while (progress < 1.0) { canvasGroup.alpha = Mathf.MoveTowards(startAlpha, endAlpha, progress); progress += rate * Time.deltaTime; yield return null; } yield return new WaitForSeconds(2); startAlpha = 1; endAlpha = 0; } Destroy(achievement); } } Ich hoffe mir kann jemand weiterhelfen, das hinzubekommen mit Unlock x.x und den Freischalten der Farbe für das jeweilge Achievement, welches den Bool auf True hat. Ist die vorgehensweiße auch gut für später wenn man die Daten in eine Binäre Datei schreiben möchte? Anbei auch das Projekt: https://we.tl/t-0KKyg2Ugsy
  2. Das versteh ich, dass man eine Referenz benötigt. Nur sagen wir ich hab 3 Scriptable Objects und 1 Prefab, das Prefab wird in einer Schleife 3x wiederholt und in einem Scrollview angezeigt. Dann seh ich ja theroethisch immer nur die Daten des 1 Scriptable Objects auf dem Prefab 3 mal? Wie kann ich das Problem am besten lösen :/? EDIT: Ich hab es jetzt so hinbekommen: 1x Gameobject mit einen Skript, welches durch das Skript eine Referenz auf ScriptableObjects hat als Beispiel 3x ScriptableObjects 1x Gameobject - Viewport/Content als Parent um Gameobjects darin zu erzeugen. Im Skript benütze ich eine for-Schleife. for(int x=0;x<testObjects.Length;x++) { Gameobject xyz = In... xyz.GetComponentInChildren<TMP_Text>().text = testObjects[x].Title; }
  3. Liebe Community meine Fragen beziehen sich auf Scriptable Objects und ich hoffe Ihr könnt Sie mir beantworten. Ist es sinnvoll Scriptable Objects für Achievements / Items / Rassen von Charakteren zu verwenden? Meine Idee ist: Achievements per Scriptable Objects anzulegen mit Werten wie: Icon/Titel/Beschreibung/Prefab Das Prefab nenn ich Achievement und setze ein Skript welches Icon/Titel/Beschreibung vom Scriptable Object ladet. Danach erstell ich ein leeres Gameobject mit einem Skript, welches ein Parent Gameobject nimmt und in diesen per Schleife die Scriptable Objects als Gameobject während des Spiels anzeigt. Mein jetztiges Problem ist nur ich bekomm die Inhalte von Titel/Beschreibung nicht in das Prefab. Bitte um jegliche Verbesserungsvorschläge :)
  4. Bei CreateAssetMenu kann man aber nur Menus unter Assets machen aber nicht in einen eigenen Menüreiter? Ich mach das nämlich alles in einem eigenen Menüreiter ausserhalb Assets
  5. Hi Community, ich wollte mal Fragen ob jemand über den Code drüber schauen kann und mir vllt. Tipps geben könnte was man verbessern könnte um ein Scriptable Object zu erstellen. using UnityEngine; using UnityEditor; using System.Collections.Generic; public class NewAchievement : ScriptableObject { [SerializeField] private string achievementName; [SerializeField] private string achievementDescription; [SerializeField] private bool achievementUnlocked; [SerializeField] private int achievementPoints; [SerializeField] private int achievementImageIndex; [SerializeField] private GameObject achievementRef; [SerializeField] private List<NewAchievement> achievementDependencies = new List<NewAchievement>(); } public class AchievementSetup { // Add Menu Item [MenuItem("RPG Engine/Achievements/Create Achievement", false, 1)] //Init private static void Init() { GenerateAchievements(); } // Generate Achievements private static void GenerateAchievements() { NewAchievement asset = ScriptableObject.CreateInstance<NewAchievement>(); AssetDatabase.CreateAsset(asset, "Assets/Scripts/Achievements/NewAchievement.asset"); AssetDatabase.SaveAssets(); EditorUtility.FocusProjectWindow(); Selection.activeObject = asset; } } Des Weiterem, kann man ein Scriptable Object anhand eines Skripts in eine Liste von Arrays eintragen oder ist dies nicht möglich?
  6. Liebe Community, mir ist klar wie man Transition zwischen Szenen macht (mehr oder weniger schaue mir gerade Asynch an), dabei funktionieren alle Animationen nur eine Denkblockade habe ich. Ich würde gerne eine Animation mit einen Bild machen welches in der Mitte verschwindet beim Einblenden und beim Ausblenden nach Innen nach Außen verschwindet. Ich hab daran gedacht das Bild ganz groß zu machen und dann per Animation zu verkleinern nur dann hab ich keinen richtigen Übergang da rundherum davor die Szene auftaucht. Als Beispiel was ich suchen würde ein Video: bis 2:41
  7. Was genau sind den PBS-Shader :-? Nur wie stellen die großen Spielerhersteller dieser Lichtquelle genau ein? Setzen Sie einfach eine gewisse Farbe als Ambient Light oder?
  8. Liebe Community, ich hätte eine Frage zu den Lichtverhältnissen in Cartoon-Spielen wie: Super Mario Galaxy / Super Mario Odyssey / Captain Toad etc Die Spiele wirken als hätten Sie durchgehend eine Lichtquelle nur wie kann man dies in Unity umsetzen oder liegt es an speziellen Shadern? Hilfreich wäre alles zu dem Thema :)
  9. Wären Scriptable Objects nicht auch sicherer als JSON Files? Z.B. für die Veränderung von Items (Bessere Werte geben etc.)
  10. Liebe Community, eine Frage an die erfahrenen Unity Nutzern. Ist es besser Items für ein Inventar in Scriptable Objects zu speichern oder in einer JSON Datei? Was wären die genauen Vor- und Nachteile. Bei Scriptable Objects wäre ja ein Object ein Item also hätte man dann bei 100 Items = 100 Scriptable Objects und bei JSON wären die Items einfach in einer Liste, oder? Es muss doch Vor- und Nachteile geben?
  11. Liebe Community, vielleicht hat ja einer das Problem nicht oder kennt sich mit dem Problem aus. Es geht um das Unity Google Play Games Plugin v0.9.50 (ich hasse es...) und Unity 2018.2 Wenn man ein Spiel mit Unity 2018.2 startet stürzt es ab. Das ist mein Code: using UnityEngine; using GooglePlayGames; using GooglePlayGames.BasicApi; using UnityEngine.SocialPlatforms; public class GPLService : MonoBehaviour { void Start() { PlayGamesPlatform.Activate(); SignIn(); } public void SignIn() { PlayGamesPlatform.Instance.localUser.Authenticate((bool success) => { if (success) { Debug.Log("Signed In"); } else { Debug.Log("Sign in failed"); } }); } public void ShowRanking() { Social.ShowLeaderboardUI(); } public void ShowAchievements() { if(Social.localUser.authenticated) { Social.ShowAchievementsUI(); } } } Es stürzt "erst" ab bei der verifizierung des Anmeldeprozesses... also bei PlayGamesPlatform.Instance.localUser.Authenticate((bool success) => Laut catlog ist das der einzige Fehler mit "W": 07-11 23:33:46.978: W/Unity(23136): !!! [Play Games Plugin DLL] 07/11/18 23:33:46 +02:00 WARNING: Creating new PlayGamesPlatform 07-11 23:33:46.978: W/Unity(23136): 07-11 23:33:46.978: W/Unity(23136): (Filename: ./Runtime/Export/Debug.bindings.h Line: 43) Ich bekomm die Krise mit dem "kack" Plugin von Google... und es gibt keine alternativen -.- Vllt. weiß hier einer einen Rat oder es kann an der AndroidManifest.xml liegen???
  12. Eine API ist immer eine Schnittstelle damit etwas miteinander kommuniziert. Die Steam API benötigst du damit Unity mit Steam kommuniziert. Steamworks ist eine sehr gute API. Hier wird es ziemlich einfach erklärt wie du es einbindest: http://steamworks.github.io/gettingstarted/ Hier hast du zwei Snippets (was denke ich deine Frage klärt): http://steamworks.github.io/snippits/
  13. UI->Button Die UI Buttons reagieren auch auf Touch. Man muss da nichts wichtiges hinzufügen.
  14. https://docs.unity3d.com/Manual/class-PlayerSettingsStandalone.html Schau unter Config Dialog Banner und ganz unten steht wie groß das Bild am besten sein soll.
  15. Ich hab nun nur ein Problem mit dem Spieler. Wenn ich bei dem Spieler das Light -> Static mache dann bleibt der Schatten am Anfang der Szene auf seiner Position und der Schatten folgt nicht dem Spieler :/ Wie kann man das Problem lösen?
×
×
  • Create New...