🦊 Результаты эксперимента с Job System в Unity
После серии тестов мы обнаружили интересные особенности работы с Job System:
✨ Главное открытие: можно спокойно использовать IntPtr для передачи ссылок на управляемые классы в джобы! Это позволяет работать с такими Unity-объектами как AnimationCurve прямо внутри джоба.
🔍 Производительность:
IntPtr показывает незначительное преимущество перед NativeArray
Разница настолько мала, что заметна только при профилировании
Выбор между IntPtr и NativeArray стоит делать исходя из удобства использования
💡 Преимущества подхода с IntPtr:
Возможность работать с некоторыми Unity-объектами в джобах.
Возможность работать с ссылочными типами.
Меньше boilerplate-кода.
Удобное кэширование нескольких массивов данных.
Прямой доступ к управляемым объектам.
⚠️ Важно помнить:
Всегда освобождать GCHandle
Дожидаться завершения джоба перед освобождением памяти
Использовать атрибут [NativeDisableUnsafePtrRestriction]
🎮 Практическое применение:
Отлично подходит для процедурной анимации, модификации мешей и других задач, где нужен доступ к Unity API внутри джобов.
#ЛисыПишутКод #CSharp #Unity #GameDev #Optimization
#UnsafeCode #UnityJobs #BurstCompiler #Programming
Post #10
53