Unity(使用GUI制作第一人称鼠标准星)

属性

简介

方法

注意:准星一般都放在屏幕正中央,所以屏幕的(宽高/2)可得中心点
屏幕宽度Screen.Width
屏幕高度Screen.Height
矩形宽度自己声明的变量这里使用W代替
矩形高度自己声明的变量这里使用H代替
准星间距自己声明的变量这里使用D代替

解释图


写入过程

因为我们想要动态准星所以打算自己用代码写一个,而不用图片直接贴上去

  1. 先声明准星的宽高,和间距其次就是准星贴图
  2. 再声明两个变量GUIStyle(用来自定义设置GUI参数)Texture(准星背景辅助参数,也可以理解为凑数的)
  3. 在游戏刚开始的时候将GUIStyle实例化并且将准星贴图赋值给其中的normal.background属性
  4. 使用GUI.Box方法在屏幕中心绘制四个矩形绘制成一个准星
  5. Box(Rect,Image,GUIStyle)(Unity文档中GUIStyle简介)​​​​​​​
    1. 这里的Rect表示创建一个矩形框架(坐标x,坐标y,矩形宽度,矩形高度
    2. Image(在这个方法中并没有实质性的作用,但是想要使用这个方法必须要填入Image,所以创建一个但不赋值起到凑数作用
    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);
    }

}
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值