Add Support for Nested NetworkObjects in Prefabs
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- csharp
- Domaine
- game-dev, networking
Piste de recherche
Aucun fichier ni test n’est nommé. Commencez par retracer comment les prefabs et les NetworkObjects sont instanciés, puis déterminez comment les objets enfants imbriqués seraient enregistrés et possédés ; le travail est terminé lorsqu’instancier un prefab met automatiquement en réseau ses NetworkObjects imbriqués, tout en préservant le parenting et une propriété distincte.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Is your feature request related to a problem? Please describe.
One major pain point of using Unity Netcode for GameObjects (as well as many other networking solutions) is the lack of support for spawning nested NetworkObjects. Currently, if you try to spawn a prefab with nested NetworkObjects, the primary NetworkObject will be networked, while all the child NetworkObjects will not.
As an example, imagine that you are trying to spawn a boat with cannons that each player can move and shoot. In this scenario, it would make sense that (1) cannons should be parented to the boat and (2) any player should be able to take ownership of a cannon (separate of the boat) when they go to move/shoot it. This means that both the boat and the cannons would need to be NetworkObjects. However, because of this limitation, you would not be able to make one boat prefab with the cannons on it.
Describe the solution you'd like
Ideally, when a prefab with nested NetworkObjects is spawned, it should automatically network any child network objects.
Describe alternatives you've considered
You can work around the issues with nested NetworkObjects, but it requires designing your prefabs/scripts in less intuitive ways.
For instance, in the boat example I mentioned earlier, you could create cannon spawners that spawn the cannons separately when the boat is spawned. However, this has its own issues. Primarily:
- It is harder to position the cannons.
- If you just try to position the cannons with the transform of the spawner, it will be difficult to visualize the final product.
- Positioning the cannon prefab first and then replacing it with the spawner requires more work than necessary. Also, what if the boat model changes and you need to reposition the cannons? You'll have to add back in the cannon prefab, position it, move the spawner to that position, and delete the cannon prefab.
- In Editor, scripts on the boat cannot reference scripts on the cannons (and vice versa).
- This means you may have to wire up scripts at runtime.
- This also means that your code will have to check to make sure that the cannons have been spawned in before doing anything with them, since they aren't necessarily spawned at the same time as the boat.
There are other solutions to these types of problems, but they are generally more difficult to implement and/or encourage poor design.
Additional context
N/A
- Langage dominant
- C#
- Étoiles
- 2.3k
- Forks
- 461
- Merge moyen
- 3 j 16 h
- PR mergées (30 j)
- 20
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Unity-Technologies/com.unity.netcode.gameobjects
-
stat:import type:bug
Difficulté 4/5 3-5 jours Accessibilité débutants 68/100
-
stat:reply-needed type:support
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
Unity-Technologies/com.unity.netcode.gameobjects#4095 · 10 commentaires ·
-
stat:awaiting-triage stat:Investigating type:bug
Unity-Technologies/com.unity.netcode.gameobjects#3912 · 5 commentaires · 1 personne assignée ·
-
Tracking type:feature-2.x
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
Unity-Technologies/com.unity.netcode.gameobjects#3870 · 5 commentaires ·
-
Please error, or at least warn, when a managed type is included in INetworkSerializeByMemcpy OuverteTracking type:feature
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
Unity-Technologies/com.unity.netcode.gameobjects#3830 · 7 commentaires ·
Toutes les issues de Unity-Technologies/com.unity.netcode.gameobjects
Issues similaires
-
bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 75/100
sillsdev/languageforge-lexbox#2665 ·
-
bug documentation frontend
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
azurenoops/spin_agent#975 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
Difficulté 2/5 1-3 heures Accessibilité débutants 92/100
dotnet/AspNetCore.Docs#37699 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
SubtitleEdit/subtitleedit#15108 · 1 commentaire ·