handzlikchris / handzlikchris/FastScriptReload

New Private field method access issue [Workaround]

Ouverte
#121 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
workaround
Langage dominant
C#
Étoiles
2.2k
Forks
167
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

## Current Workaround

So it seems this is the workaround for now. Any direct access the new field breaks the rewritter.

```c#
_instanceNewField.DoesWhatYouWant(); //<- fails to rewrite
var myLocalNewField = _instanceNewField; // <- this gets correctly rewritten
myLocalNewField.DoesWhatYouWant(); //<- All good
```
Then on your next recompilation round you can clean up the syntax.

## Issue
I'm not sure if it's a regression and what would be its reason, but most of the time nowadays adding private fields fails as they are not rewritten correctly in every places. Example bellow.
Added
`private CameraState _lastCamState;`

One of the correctly rewritten part I believe
`FastScriptReload.Scripts.Runtime.TemporaryNewFieldValues.ResolvePatchedObject(this)._lastCamState = state;`

Some other places not rewritten
` Gizmos.DrawWireSphere(_lastCamState.FinalPosition, BodyRadius);`

It is the NewFieldsRewriter job to perform the rewrite now not sure why it skip some cases.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par le NewFieldsRewriter et reproduisez le cas signalé d’accès à un champ privé dans le workflow de hot-reload de Unity. Comparez l’accès direct à _instanceNewField avec le contournement utilisant une variable locale, puis vérifiez que des utilisations telles que Gizmos.DrawWireSphere(_lastCamState.FinalPosition, BodyRadius) sont réécrites de manière cohérente sans nécessiter de nettoyage syntaxique.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
csharp, unity
Domaine
devtools, game-dev
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.