Wpis z mikrobloga

@ewolucja_myszowatych: Chyba możesz zrobić coś w stylu:

string scriptName;
foreach(var component in gameobject.GetlAllComponents())
{
if (component.GetType() == scriptName)
return true;
}

Kod pisany na kolenia w okienku komentarza, więc musisz sprawdzić czy nazwy wszystkich funkcji są dobre.

Zaznaczam tylko że pisanie kodu tego typu to proszenie się o problemy i jak bym zobaczył w robocie takie konstrukcje to rzucił bym papierami. Ale że się da to tylko powołuję się na klauzulę
  • Odpowiedz
@draculeq: @MichalPypek: a czy jest możliwe podstawianie do kodu całych linii pobranych ze zmiennej w formie stringa? chciałbym mieć bardzo elastyczny skrypt debugujący który wyświetla wartość zmiennej której lokację znam np:

public string varToDebug; //tu wpiszę w Edytorze np. "rocket.GetComponent().height;"
a w kodzie:

Debug.Log (varToDebug.ToString());
bo mógłbym też zrobić switcha i wybierać predefiniowane linie do zmiennych ale to jest bardzo łopatologiczne rozwiązanie
  • Odpowiedz
@ewolucja_myszowatych:

Nie da się w taki sposób wywoływać kodu w C# - ze stringa (tzn. pewnie jakoś się da, ale raczej nie jest to łatwe).

Jak bardzo chcesz robić takie rzeczy, to użyj refleksji:
https://docs.microsoft.com/en-us/dotnet/api/system.type.getfield?view=net-5.0

https://docs.microsoft.com/en-us/dotnet/api/system.reflection.fieldinfo.getvalue?view=net-6.0

Wtedy możesz sobie zapisać gdzieś tam w edytorze parę stringów: typ i nazwa pola, brać FieldInfo z typu GetFieldem, a potem z FieldInfo pobierać wartość do danego componentu za pomocą fieldInfo.GetValue(tutajcomponent)

Ale myślę, że o
  • Odpowiedz
@draculeq: @MichalPypek: Dzieki za odpowiedzi, na razie jest to za dużo dłubania więc zdefiniuję sobie z 10 predefiniowanych zmiennych które będzie przełaczał switch i potem ew. to rozbuduję o możliwość szukania po nazwie.
Plugin mnie nie ratuje bo mając dostęp przez własny skrypt mogę sobie oprócz czytania rysować różne linie i inne reprezentacje graficzne miedzy obiektami więc będę to forsował. Ale może coś w jego kodzie znajdę
  • Odpowiedz