handzlikchris / handzlikchris/FastScriptReload

Improvement: FindFileOrThrow for dotnet tools caching result between project sessions

Abierto
#171 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
C#
Estrellas
2.2k
Forks
167
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Hi, handzlikchris. Thank you for your excellent work.

I noticed that every time project opens, FSR always search deeply into Unity installation path for dotnet tools, which spends seconds to complete. Because of storing in SessionState, first-time project launch can't benefit from it.

In my opinion, utilize EditorPrefs with unityVersion could be better.

Here is my snippet for this:

private static string FindFileOrThrow(string fileName)
{
    var cacheKey = $"FSR:FilePath_{fileName}:{Application.unityVersion}";
    var result = EditorPrefs.GetString(cacheKey, null);

    if (result != null && !File.Exists(result))
    {
        EditorPrefs.DeleteKey(cacheKey);
        result = null;
    }

    if (result == null)
    {
        result = Directory
            .GetFiles(ApplicationContentsPath, fileName, SearchOption.AllDirectories)
            .FirstOrDefault();

        if (result == null)
        {
            throw new Exception($"Unable to find '{fileName}', make sure Editor version supports it. You can also add preprocessor directive 'FastScriptReload_CompileViaMCS' which will use Mono compiler instead");
        }
    }

    EditorPrefs.SetString(cacheKey, result);
    return result;
}

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Localiza la implementación de FindFileOrThrow e inspecciona cómo SessionState almacena actualmente el resultado. Verifica que la caché esté limitada a la versión de Unity, invalide las rutas inexistentes y evite la búsqueda profunda después de volver a abrir un proyecto; prueba manualmente el primer inicio y las sesiones posteriores del proyecto.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
csharp, unity
Área
game-dev, tooling
Tipo de issue
Nueva funcionalidad
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
42/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.