Заменить экземпляр объекта другим в C#

В этом вопросе я хотел бы узнать, если и как это возможно. Этот метод может показаться крайне плохой практикой, но похоже, что API (UnityEditor ), который я использую, делает что-то подобное, и мне просто любопытно.

Если есть несколько ссылок на один и тот же объект, можно ли создать экземпляр нового объекта в том же слоте памяти, чтобы все предыдущие ссылки указывали на новый объект?

Я понял, что единственный возможный способ сделать это — использовать неуправляемый C++. По существу происходит следующее:

// Original prefab
GameObject prefab = x;
prefab.tag = "Untagged";

// A copy of the original prefab
GameObject prefabCopy = PrefabUtility.InstantiatePrefab(prefab) as GameObject;
prefabCopy.tag = "EditorOnly";  // Change from initial value "Untagged"

Debug.Log(prefab.tag);     // "Untagged"   - expected
Debug.Log(prefabCopy.tag); // "EditorOnly" - expected

// Replace contents of prefab file with `prefabCopy`
PrefabUtility.ReplacePrefab(prefabCopy, prefab);

// Destroy the copy
DestroyImmediate(prefabCopy);

Debug.Log(prefab.tag);     // "EditorOnly"   - whoa?

Каким образом prefabтеперь указывает на другой объект?

Примечание. :Имейте в виду, что Unity построена на основе версии.NET Mono

-. 121 ---1176815- Как узнать, простаивает ли актер У меня есть неизвестное количество заданий, которые должны быть выполнены известным (, конечно же, )числом актеров. Начальное количество заданий может увеличиться после того, как актер завершит задание. То есть актер, по завершении...

У меня есть неизвестное количество заданий, которые должны быть выполнены известным (, конечно же, )числом актеров. Начальное количество заданий может увеличиться после того, как актер завершит задание. То есть актор после завершения своей задачи может добавить новое задание для выполнения.

Я справляюсь с этим так, чтобы каждый актор отправлял сообщение обратно мастеру, когда он завершает свою работу, не только с результатом выполнения, но и с «флагом», указывающим, что актор сейчас бездействует. У мастера есть очередь заданий и очередь бездействующих актеров, всякий раз, когда актор отправляет «сообщение о завершении задания», мастер проверяет, есть ли что-то еще для этого актера...так далее и так далее, пока очередь заданий не станет пустой, а очередь бездействующих не заполнится... в этот момент я выключу систему. Здесь нет особого надзора, поэтому я чувствую, что делаю это неправильно...

Я не использую маршрутизатор, потому что не смог найти способ запросить у маршрутизатора бездействующих участников, поэтому мой вопрос:

Как «правильно» справиться с описанной выше ситуацией в Akka?

8
задан user247702 11 September 2017 в 12:19
поделиться