Есть проблема, которую не получается решить несколько недель.
Гуглил, но так и не нашел то что мне нужно.
В общем есть один скрипт (Person_Controller), который висит на main Камере, и есть множество экземпляров разных классов (_settings) на разных объектах
(human_settings, humanoid_settings и тп...)
Мне нужно заносить в переменную player_setting класса Person_Controller классы тех экземпляров, как бы подключаясь к объектам "на лету".
сейчас использую это:
Синтаксис:
Используется csharp
public class Person_Controller: MonoBehaviour
{
public GameObject Player;
<span style="font-weight: bold">public human_settings human_setting;</span>
<span style="font-weight: bold">public humanoid_settings humanoid_setting;</span>
public string TAG;
void Awake()
{
Components();
TagsPlayer();
}
void Components()
{
TAG = Player.tag;
......
}
void TagsPlayer()
{
switch (TAG)
case "human":
human_setting = Player.GetComponent<human_settings>();
break;
case "humanoid":
humanoid_setting = Player.GetComponent<humanoid_settings>();
break;
}
}
{
public GameObject Player;
<span style="font-weight: bold">public human_settings human_setting;</span>
<span style="font-weight: bold">public humanoid_settings humanoid_setting;</span>
public string TAG;
void Awake()
{
Components();
TagsPlayer();
}
void Components()
{
TAG = Player.tag;
......
}
void TagsPlayer()
{
switch (TAG)
case "human":
human_setting = Player.GetComponent<human_settings>();
break;
case "humanoid":
humanoid_setting = Player.GetComponent<humanoid_settings>();
break;
}
}
и так везде в коде, где обращаюсь к _settings экземпляров и к другим их скриптам через _settings типо:
Синтаксис:
Используется csharp
void FixedUpdate()
{
if (Input.GetAxis("Vertical")
{
switch (TAG)
{
case "human":
human_setting.my_controller.Movement = true;
break;
case "humanoid":
humanoid_setting.my_controller.Movement = true;
break;
}
}
}
но ведь тегов может быть десятки..
Наверняка можно проще)
что-то вроде:
Синтаксис:
Используется csharp
public class Person_Controller: MonoBehaviour
{
public GameObject Player;
public <span style="font-weight: bold">object player_setting;</span>
public string TAG;
void Awake()
{
Components();
TagsPlayer();
}
void Components()
{
TAG = Player.tag;
......
}
void TagsPlayer()
{
switch (TAG)
{
case "human":
player_setting= Player.GetComponent<human_settings>();
break;
case "humanoid":
player_setting= Player.GetComponent<humanoid_settings>();
break;
}
}
void FixedUpdate()
{
if (Input.GetAxis("Vertical")
{
player_setting.my_controller.Movement = true;
}
}
{
public GameObject Player;
public <span style="font-weight: bold">object player_setting;</span>
public string TAG;
void Awake()
{
Components();
TagsPlayer();
}
void Components()
{
TAG = Player.tag;
......
}
void TagsPlayer()
{
switch (TAG)
{
case "human":
player_setting= Player.GetComponent<human_settings>();
break;
case "humanoid":
player_setting= Player.GetComponent<humanoid_settings>();
break;
}
}
void FixedUpdate()
{
if (Input.GetAxis("Vertical")
{
player_setting.my_controller.Movement = true;
}
}
Подскажите, как мне решить проблему?