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 单ページでターム别で表示を切り替える