csharp JobSystemテスト迁移
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp JobSystemテスト迁移相关的知识,希望对你有一定的参考价值。
using Unity.Collections;
using Unity.Jobs;
using UnityEngine;
// RaycastCommand使用ver.
public class JobTest : MonoBehaviour
{
[SerializeField]
private int _num = 100;
/// <summary>
/// 動かす対象たち
/// </summary>
private Transform[] _targets;
/// <summary>
/// 動かす対象のprefab
/// </summary>
public Transform prefab;
/// <summary>
/// NativeArrayは構造体です
/// </summary>
private NativeArray<float> _velocity;
void OnEnable()
{
_targets = new Transform[_num];
_velocity = new NativeArray<float>(_targets.Length, Allocator.Persistent);
// バッファの初期化
for (int i = 0; i < _targets.Length; i++)
{
var tr = Instantiate(prefab) as Transform;
tr.localPosition =
new Vector3(Random.Range(-400f, 400f), Random.Range(10, 20f), Random.Range(-400f, 400f));
_targets[i] = tr;
_velocity[i] = -1;
}
}
void OnDisable()
{
_velocity.Dispose();
}
void Update()
{
// 入力バッファの用意
int len = _targets.Length;
var cmds = new NativeArray<RaycastCommand>(len, Allocator.TempJob);
var results = new NativeArray<RaycastHit>(len, Allocator.Temp);
// 入力バッファを埋める
for (int i = 0; i < len; i++)
{
// 地面のColliderだけをヒット対象とするためLayerMaskセット
cmds[i] = new RaycastCommand(_targets[i].localPosition, Vector3.down, 1000, 1 << 9, 1);
}
// ジョブで実行するレイキャストのバッチをスケジュールする => ジョブを実行
JobHandle jobHandle = RaycastCommand.ScheduleBatch(cmds, results, 20);
// ジョブの完了を確認する
jobHandle.Complete();
// 不要になったので、コマンドを削除
cmds.Dispose();
for (int i = 0; i < len; i++)
{
RaycastHit hit;
Physics.Raycast(_targets[i].localPosition, Vector3.down, out hit, 1000, 1 << 9);
results[i] = hit;
}
for (int i = 0; i < len; i++)
{
if (_velocity[i] < 0 && results[i].distance < 1f)
{
_velocity[i] = 2;
}
// 減速処理
_velocity[i] -= 0.1f;
// NativeArray型は構造体なので、この書き方はアウト
//v -=0.1f
}
// RayCastHitが不要になるので解放
results.Dispose();
for (int i = 0; i < len; i++)
{
// 動かす対象の位置を更新
_targets[i].localPosition += Vector3.up * _velocity[i];
}
}
}
以上是关于csharp JobSystemテスト迁移的主要内容,如果未能解决你的问题,请参考以下文章
csharp ScreenPointToRayテスト
csharp カスタム属性テスト
csharp AnimationEventで对象参照とAnimationEvent型を送るテスト
php Gist Publicテスト
php ログイン认证テスト
php テスト