测试IJobParallelForDefer
This commit is contained in:
1 parent
d9b66edd89
commit
098cbfb696
4 files changed
+80
-6
No files matched your search
@@ -22,6 +22,20 @@ namespace ECSTest.Server
|
||||
// Debug.LogError($"xxxx2222 CannonData id: {componentId2}");
|
||||
}
|
||||
}
|
||||
|
||||
[BurstCompile]
|
||||
public struct GetDeferred : IJob
|
||||
{
|
||||
public World world;
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
// var componentId = ComponentId<BulletData>.Get();
|
||||
// Debug.LogError($"XXXX bulletData id: {componentId}");
|
||||
// var componentId2 = ComponentId<CannonData>.Get();
|
||||
// Debug.LogError($"xxxx2222 CannonData id: {componentId2}");
|
||||
}
|
||||
}
|
||||
|
||||
[BurstCompile]
|
||||
public struct SpawnCannonJob : IJob
|
||||
@@ -33,6 +47,7 @@ namespace ECSTest.Server
|
||||
public int maxCount;
|
||||
public int spawnCountPerFrame;
|
||||
public Rect rect;
|
||||
public int initHealth;
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
@@ -49,7 +64,11 @@ namespace ECSTest.Server
|
||||
var velocity = new float2(c, s);
|
||||
|
||||
var entity = database.AddEntity();
|
||||
//TODO
|
||||
ref var cannonData = ref database.GetDataRef<CannonData>(entity);
|
||||
cannonData.position = pos;
|
||||
cannonData.velocity = velocity;
|
||||
cannonData.direction = dir;
|
||||
cannonData.health = initHealth;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,11 +58,6 @@ namespace ECSTest.Server
|
||||
|
||||
void Update()
|
||||
{
|
||||
var componentId = ComponentId<BulletData>.Get();
|
||||
Debug.LogError($"AAAA bulletData id: {componentId}");
|
||||
var componentId2 = ComponentId<CannonData>.Get();
|
||||
Debug.LogError($"AAAA2222 CannonData id: {componentId2}");
|
||||
|
||||
networkJobHandle.Complete();
|
||||
|
||||
var concurrentDriver = driver.ToConcurrent();
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
using Unity.Burst;
|
||||
using Unity.Collections;
|
||||
using Unity.Jobs;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ECSTest
|
||||
{
|
||||
public class TestIJobParallelForDefer
|
||||
{
|
||||
[BurstCompile]
|
||||
public struct PopulateJob : IJob
|
||||
{
|
||||
public NativeList<int> input;
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
Debug.Log($"000===== length: {input.Length}");
|
||||
for (int i = 0; i < 100; ++i)
|
||||
input.Add(i);
|
||||
}
|
||||
}
|
||||
|
||||
[BurstCompile]
|
||||
public struct StatJob : IJob
|
||||
{
|
||||
public NativeList<int> input;
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
Debug.Log($"111===== length: {input.Length}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[BurstCompile]
|
||||
public struct ParallelJob : IJobParallelForDefer
|
||||
{
|
||||
[ReadOnly] public NativeList<int> input;
|
||||
|
||||
public void Execute(int index)
|
||||
{
|
||||
Debug.Log($"index: {index}, length: {input.Length}");
|
||||
}
|
||||
}
|
||||
|
||||
public static void Test()
|
||||
{
|
||||
var list = new NativeList<int>(100, Allocator.TempJob);
|
||||
var handle = new PopulateJob() {input = list}.Schedule();
|
||||
handle = new ParallelJob() { input = list }.Schedule(list, 16, handle);
|
||||
handle = new PopulateJob() {input = list}.Schedule(handle);
|
||||
handle = new ParallelJob() { input = list }.Schedule(list, 16, handle);
|
||||
handle.Complete();
|
||||
list.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c02a6e16e5b349d3b07d50471da304c9
|
||||
timeCreated: 1766089200
|
||||
Reference in new issue
Block a user