-
Notifications
You must be signed in to change notification settings - Fork 52
Description
-
Изменить WorldExtensions на WorldPluginsExtensions
-
В примере с Unity Jobs в части ниже хотелось бы видеть более конкертный пример. Довольно долго тупил на нём. Я не сразу понял, что эти примеры не связаны друг с другом. В общем создают экземпляр класса ExampleParallelJob, а класс ниже называется TestParallelJobReference. Почему бы не объединить эти два примера в один? В идеале хочется просто скопировать код из документации, далее вставить в редактор и на выходе иметь рабочий код. Я так всегда делаю, так как в редакторе проще читать код.
Example job scheduling:
public sealed class SomeSystem : ISystem {
private Filter filter;
private Stash stash;
...
public void OnUpdate(float deltaTime) {
var nativeFilter = this.filter.AsNative();
var parallelJob = new ExampleParallelJob {
entities = nativeFilter,
healthComponents = stash.AsNative(),
// Add more native stashes if needed
};
var parallelJobHandle = parallelJob.Schedule(nativeFilter.length, 64);
parallelJobHandle.Complete();
}
}
Example job:
[BurstCompile]
public struct TestParallelJobReference : IJobParallelFor {
[ReadOnly]
public NativeFilter entities;
public NativeStash healthComponents;
public void Execute(int index) {
var entity = this.entities[index];
ref var component = ref this.healthComponents.Get(entity, out var exists);
if (exists) {
component.Value += 1;
}
// Alternatively, you can avoid checking existance of the component
// if the filter includes said component anyway
ref var component = ref this.healthComponents.Get(entity);
component.Value += 1;
}
}