Unity(GUIを使用して一人称マウスを標準星にする)

属性

序章

方法

注:十字線は通常、画面の中央に配置されるため、画面の(幅/高さ/ 2)が中心点を取得できます
画面幅 Screen.Width
画面の高さ Screen.Height
長方形の幅 自分で宣言した変数はここでWに置き換えられます
長方形の高さ 自分で宣言した変数は、ここではHに置き換えられます
正面視距離 ここでは、自己宣言された変数はDに置き換えられます

説明図


書き込みプロセス

ダイナミックな十字線が欲しいので、直接写真を貼り付けるのではなく、自分で書く予定です。

  1. 最初に十字線の幅と高さ、および間隔を宣言し、次に十字線マップを宣言します
  2. 次に、2つの変数GUIStyle(GUIパラメーターのカスタマイズに使用)Texture(フロントサイトの背景の補助パラメーター。数値を構成するものとしても理解できます)を宣言します。
  3. ゲームの開始時にGUIStyleをインスタンス化し、十字線マップをそのnormal.backgroundプロパティに割り当てます。
  4. GUI.Boxメソッドを使用して、画面の中央に4つの長方形を描画し、十字線を描画します
  5. Box(Rect、Image、GUIStyle)(UnityドキュメントのGUIStyleの紹介
    1. ここでの長方形とは、長方形のフレームを作成することを意味します(座標x、座標y、長方形の幅、長方形の高さ
    2. 画像(この方法には実質的な役割はありませんが、この方法を使用する場合は、画像を入力する必要があるため、画像を作成しますが、番号を構成するために割り当てないでください
    3. GUIStyle(フロントサイトの設定はこのパラメーターにあります。このパラメーターに値を割り当てない場合は、Unityに付属のGuiStyle設定を使用します)
  6. ここで静的十字線を宣言します。動的な場合は、特定のアクション中に座標、間隔、幅、高さを変更するだけで十分です。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FPS_CrossHair : MonoBehaviour
{
    [Header("准星的长度")]
    public float width;
    [Header("准星的高度")]
    public float height;
    [Header("上下(左右)两条准星之间的距离")]
    public float distance;
    [Header("准星背景图")]
    public Texture2D crosshairTexture;

    private GUIStyle lineStyle;     //  GUI自定义参数
    private Texture tex;            //  准星背景辅助参数

    private void Start()
    {
        lineStyle = new GUIStyle();                         //  游戏开始实例化背景图
        lineStyle.normal.background = crosshairTexture;     //  将背景图默认背景设为准星背景
    }

    private void OnGUI()
    {
        //  左准星
        GUI.Box(new Rect(Screen.width / 2 - distance / 2 - width, Screen.height / 2 - height / 2, width, height), tex, lineStyle);
        //  右准星
        GUI.Box(new Rect(Screen.width / 2 + distance / 2 , Screen.height / 2 - height / 2, width, height), tex, lineStyle);
        //  上准星
        GUI.Box(new Rect(Screen.width / 2 - height / 2, Screen.height / 2 - distance / 2 - width, height, width), tex, lineStyle);
        //  下准星
        GUI.Box(new Rect(Screen.width / 2 - height / 2, Screen.height / 2 + distance / 2, height, width), tex,lineStyle);
    }

}

おすすめ

転載: blog.csdn.net/qq_24977805/article/details/123681090