[RESOLVIDO] Probleminha com ScriptableObject e Dictonary
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Probleminha com ScriptableObject e Dictonary
Estou fazendo esse teste de wave function collapse.
mas como podem ver está tendo resultados diferentes na engine e no browser.
eu já identifiquei o problema, vou explicar.
Essas Tiles são salvas em scriptablesObjects.
Cada possível tile tem conectores de cada lado, cada conector é uma string, para que hajam conexão devem ser igual ao do lado oposto do vizinho.
Para fins de facilitar em outras partes do código eu armazeno isso em um Dictonary<Vector3int, string> o problema é que dictonary não é acessível pelo inspector. (dá pra ver o inspector do meu ScriptableObject na primeira print)
Então eu tenho uma variável que existe apenas no editor que no OnValidate() é convertida para o Dictonary.
O problema é que essa versão convertida não está sendo passado para o browser na build... lá esse Dictonary está basicamente vazia.
Em outras palavras quero saber se alguém sabe uma forma de fazer com que esse meu Dictonary seja realmente salvo... Assim como as variáveis que eu defino via inspector do mesmo
mas como podem ver está tendo resultados diferentes na engine e no browser.
eu já identifiquei o problema, vou explicar.
Essas Tiles são salvas em scriptablesObjects.
Cada possível tile tem conectores de cada lado, cada conector é uma string, para que hajam conexão devem ser igual ao do lado oposto do vizinho.
Para fins de facilitar em outras partes do código eu armazeno isso em um Dictonary<Vector3int, string> o problema é que dictonary não é acessível pelo inspector. (dá pra ver o inspector do meu ScriptableObject na primeira print)
Então eu tenho uma variável que existe apenas no editor que no OnValidate() é convertida para o Dictonary.
O problema é que essa versão convertida não está sendo passado para o browser na build... lá esse Dictonary está basicamente vazia.
Em outras palavras quero saber se alguém sabe uma forma de fazer com que esse meu Dictonary seja realmente salvo... Assim como as variáveis que eu defino via inspector do mesmo
- Código:
using System.Security.Cryptography.X509Certificates;
using System.Collections.Generic;
namespace WaveFuncGenerator
{
using UnityEngine;
[CreateAssetMenu(menuName = "Wave Function Collapse/Modules")]
public class Modules : ScriptableObject
{
public GameObject gameObject;
[SerializeField] public Dictionary<Vector3Int, string> conections = new Dictionary<Vector3Int, string>();
public override string ToString()
{
string str = this.name + ": ";
foreach (var item in conections)
{
str += item.Value + ", ";
}
return str;
}
#if UNITY_EDITOR
[SerializeField] private conexoes _conections;
private void OnValidate() {
conections.Clear();
conections.Add(Vector3Int.forward, _conections.forward);
conections.Add(Vector3Int.back, _conections.back);
conections.Add(Vector3Int.right, _conections.right);
conections.Add(Vector3Int.left, _conections.left);
conections.Add(Vector3Int.up, _conections.up);
conections.Add(Vector3Int.down, _conections.down);
}
#endif
}
- Código:
#if UNITY_EDITOR
[System.Serializable]
public struct conexoes
{
public string forward;
public string back;
public string right;
public string left;
public string up;
public string down;
}
#endif
}
Re: [RESOLVIDO] Probleminha com ScriptableObject e Dictonary
fiquei sabendo por programadores gringos que o Dictionary da unity foi descontinuado, e não é recomendado utilizar ele, deve ser esse o erro de exportação, posso estar enganado.
Re: [RESOLVIDO] Probleminha com ScriptableObject e Dictonary
Saberia me dizer qual alternativa eles propõem?stratengine escreveu:fiquei sabendo por programadores gringos que o Dictionary da unity foi descontinuado, e não é recomendado utilizar ele, deve ser esse o erro de exportação, posso estar enganado.
Re: [RESOLVIDO] Probleminha com ScriptableObject e Dictonary
eles recomendam não utilizar o Dictionary, no seu lugar utilizam uma Class, que simularia o dictionary.
class dict
{
public int in;
public vector3 vec;
}
class dict
{
public int in;
public vector3 vec;
}
Re: [RESOLVIDO] Probleminha com ScriptableObject e Dictonary
ai você acessaria assim:
dic tipo;
//variavel do tipo da classe dic
tipo.in=0
tipo.vec.x= 10
dic tipo;
//variavel do tipo da classe dic
tipo.in=0
tipo.vec.x= 10
Re: [RESOLVIDO] Probleminha com ScriptableObject e Dictonary
Muito Obrigad, funcionoustratengine escreveu:eles recomendam não utilizar o Dictionary, no seu lugar utilizam uma Class, que simularia o dictionary.
class dict
{
public int in;
public vector3 vec;
}
- Código:
[System.Serializable]
public class DictionarySerializable : IEnumerator, IEnumerable
{
[HideInInspector] public const int Lenght = 6;
public pair[] list = new pair[6];
#region Dictionary
int index = 0;
public bool Add(Vector3Int key, string value)
{
if (index >= Lenght)
return false;
if (!Contains(key)) //contains ?
{
list[index] = new pair(key, value);
index++;
}
return true;
}
public bool Contains(Vector3Int key)
{
foreach (pair p in list)
{
if (p.Key == key)
return true;
}
return false;
}
public bool TryGetValue(Vector3Int key, out string value)
{
value = "";
for (int i = 0; i < Lenght; i++)
{
if (list[i].Key == key)
{
value = list[i].Value;
return true;
}
}
return true;
}
public void Clear()
{
index = 0;
list = new pair[Lenght];
}
#endregion
int position = -1;
//IEnumerator and IEnumerable require these methods.
public IEnumerator GetEnumerator()
{
return (IEnumerator)this;
}
//IEnumerator
public bool MoveNext()
{
position++;
return (position < Lenght);
}
//IEnumerable
public void Reset()
{
position = -1;
}
//IEnumerable
public object Current
{
get { return list[position]; }
}
}
[System.Serializable]
public struct pair
{
public Vector3Int Key;
public string Value;
public pair(Vector3Int key, string value)
{
this.Key = key;
this.Value = value;
}
}
}
Tópicos semelhantes
» probleminha com codigo
» Probleminha em um script que fiz
» PROBLEMINHA NO SCRIPT DE MARCAS DE DERRAPAGEM
» Probleminha na animação 16bit andando...
» probleminha ao usar o Platform Effector2d
» Probleminha em um script que fiz
» PROBLEMINHA NO SCRIPT DE MARCAS DE DERRAPAGEM
» Probleminha na animação 16bit andando...
» probleminha ao usar o Platform Effector2d
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos