Mam w Unity różne skrypty do których chciałbym się odwoływać poprzez wpisanie ich nazwy:
public string scriptName; //wpisuje recznie w edytorze gameObject.GetComponent(); //pseudokod Da się tak w ogóle? Bo skrypty nie są jednego typu #unity3d #csharp
GetComponent ma niegeneryczne metody, które przyjmują Type albo string.
gameObject.GetComponent(typeName); Z proszeniem o problemy wyżej się zgadzam, ale zakładam że w imię nauki trzeba popróbować brzydkich rzeczy, żeby potem na nie pluć ze zrozumieniem ( ͡°͜ʖ͡°)
@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
@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ę
public string scriptName; //wpisuje recznie w edytorzegameObject.GetComponent(); //pseudokod
Da się tak w ogóle? Bo skrypty nie są jednego typu
#unity3d #csharp
string scriptName;
foreach(var component in gameobject.GetlAllComponents())
{
if (component.GetType()
https://docs.unity3d.com/ScriptReference/GameObject.GetComponent.html
GetComponent ma niegeneryczne metody, które przyjmują Type albo string.
gameObject.GetComponent(typeName);Z proszeniem o problemy wyżej się zgadzam, ale zakładam że w imię nauki trzeba popróbować brzydkich rzeczy, żeby potem na nie pluć ze zrozumieniem ( ͡° ͜ʖ ͡°)
@MichalPypek: Wyparłem z pamięci fakt że owe istnieją.
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
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
Kojarzę że były jakieś pluginy które pozwalały debugować hierarchię sceny i podglądać wartości obiektów.
Teraz znalazłem coś takiego co pierwszy raz na oczy widzę, ale może się nada do twoich zastosowań: https://assetstore.unity.com/packages/tools/gui/runtime-inspector-hierarchy-111349
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ę