csharp ジョブの使用/未使用を切り替えてみた
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp ジョブの使用/未使用を切り替えてみた相关的知识,希望对你有一定的参考价值。
using UnityEngine;
using Unity.Collections;
using Unity.Jobs;
/// <summary>
/// 毎フレームpositionにvelocityを加算するだけの単純なジョブサンプル
/// </summary>
public class ApplyVelocitySample2 : MonoBehaviour
{
/// <summary>
/// ジョブ定義
/// 定義できる変数はBlittable型のみ
/// </summary>
struct VelocityJob : IJob
{
[ReadOnly]
public NativeArray<Vector3> velocity;
public NativeArray<Vector3> position;
public float deltaTime;
/// <summary>
/// ジョブの処理内容
/// </summary>
public void Execute()
{
Utility.Execute(position, velocity, deltaTime);
}
}
/// <summary>
/// 処理する要素数
/// </summary>
private int _count = 100000;
public bool useJob = false;
public void Update()
{
// バッファ生成
var position = new NativeArray<Vector3>(_count, Allocator.Persistent);
var velocity = new NativeArray<Vector3>(_count, Allocator.Persistent);
for (var i = 0; i < velocity.Length; i++)
{
// 入力バッファの中身を詰める
velocity[i] = new Vector3(0, 10, 0);
}
if (useJob)
{
// ジョブ生成して、必要情報を渡す
var job = new VelocityJob()
{
deltaTime = Time.deltaTime,
position = position,
velocity = velocity
};
// ジョブを実行
JobHandle jobHandle = job.Schedule();
// ジョブ完了の待機
jobHandle.Complete();
}
else
{
Utility.Execute(position, velocity, Time.deltaTime);
}
for (int i = 0; i < _count; i++)
{
// 更新後のデータを取得してほげほげする
var pos = position[i];
// Do something...
}
// バッファの破棄
position.Dispose();
velocity.Dispose();
}
}
public static class Utility
{
public static void Execute(NativeArray<Vector3> position, NativeArray<Vector3> velocity, float deltaTime)
{
for (var i = 0; i < position.Length; i++)
{
position[i] = position[i] + velocity[i] * deltaTime;
}
}
}
以上是关于csharp ジョブの使用/未使用を切り替えてみた的主要内容,如果未能解决你的问题,请参考以下文章
csharp キー入力でアニメーションを切り替え,画面にアニメーション名を表示する
csharp 统一のシーンファイルリストウィンドウ。全てのシーン,ビルド登录シーンを切り替え可。
html CSSファイル自体を切り替え
javascript 画面幅によって画像を切り替える
html 画面サイズ别にCSSを切り替える方法
php 单ページでターム别で表示を切り替える