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

2023-11-03

属性

简介

方法

注意:准星一般都放在屏幕正中央,所以屏幕的(宽高/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);
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity(使用GUI制作第一人称鼠标准星) 的相关文章

  • Unity3D StartCoroutine 调用一个函数,该函数什么时候返回?

    我知道Unity3D StartCoroutine调用了一个与StartCoroutine在同一线程上运行的函数 但是被调用的函数什么时候返回到原始调用者 我在互联网上查找了一个很好的 Unity3D Coroutine 示例 但找不到完整
  • C 中的变量定义是什么意思[重复]

    这个问题在这里已经有答案了 你们能告诉我 这在 C 中意味着什么吗 define Privileged Data Privileged Data static int dVariable 编译器对变量进行寻址有特殊意义吗 这只是一个宏Pri
  • 扫描文本文件时如何跳过行?

    我想扫描一个文件并在阅读之前跳过一行文本 我试过 fscanf pointer n struct test i j 但这个语法只是从第一行开始 我可以使用 scanf 使用以下指令跳过行 fscanf config file n n 格式字
  • SetWindowsHookEx 函数返回 NULL

    我正在研究 DLL 注入 但收到错误如下 挂接进程失败 87 参数不正确 目标进程和dll都是64位的 注入代码为 BOOL HookInjection TCHAR target TCHAR dll name https msdn micr
  • 关闭 XDOCUMENT 的实例

    我收到这个错误 该进程无法访问文件 C test Person xml 因为它是 被另一个进程使用 IOException 未处理 保存文件内容后如何关闭 xml 文件的实例 using System using System Collec
  • 如何在 Windows 窗体中运行屏幕保护程序作为其背景?

    如何在 Windows 窗体中运行屏幕保护程序作为其背景 用户还可以在屏幕保护程序运行时与表单控件进行交互 为什么这个 我们有一个案例 需要在用户时运行 Windows Bubbles 屏幕保护程序 可以继续与表单控件交互吗 您可以使用以下
  • 如何使用泛型类型的 DataContractSerializer 编写自定义序列化器?

    我想编写一个自定义序列化器 用于将会话状态存储到Azure 缓存 预览版 这意味着这个自定义序列化器必须实现IDataCacheObjectSerializer 如果我错了 请告诉我 我需要编写这个自定义序列化程序的原因是我需要序列化一些包
  • 线程安全的 C++ 堆栈

    我是 C 新手 正在编写一个多线程应用程序 不同的编写者将对象推入堆栈 读者将它们从堆栈中拉出 或至少将指针推入对象 C 中是否有任何内置结构可以在不添加锁定代码等的情况下处理此问题 如果没有 那么 Boost 库呢 EDIT 你好 感谢您
  • QThread - 使用槽 quit() 退出线程

    我想在线程完成运行时通知对象 但是 我无法让线程正确退出 我有以下代码 处理器 cpp thread new QThread tw new ThreadWorker connect tw SIGNAL updateStatus QStrin
  • c# 如何生成锦标赛括号 HTML 表

    所以我已经被这个问题困扰了三个星期 但我一生都无法弄清楚 我想做的是使用表格获得这种输出 演示 http www esl world net masters season6 hanover sc2 playoffs rankings htt
  • 数据损坏 C++ 和 Python 之间的管道

    我正在编写一些代码 从 Python 获取二进制数据 将其通过管道传输到 C 对数据进行一些处理 在本例中计算互信息度量 然后将结果通过管道传输回 Python 在测试时 我发现如果我发送的数据是一组尺寸小于 1500 X 1500 的 2
  • 为什么WCF中不允许方法重载?

    假设这是一个ServiceContract ServiceContract public interface MyService OperationContract int Sum int x int y OperationContract
  • 如何不在类中实现接口的功能?

    面试时面试官问了我以下问题 但我不知道这个问题的答案是什么 请帮忙 如果我不想 我必须做什么 在我的类中实现一个函数 在接口中声明为 由我班实施 Edited 我正在使用 NET 和 C 如果有人可以提供 C 示例代码示例 那就太好了 Th
  • 如何在 VS Code 中为 CMake 项目设置 C/C++ IntelliSense?

    我正在尝试使用 libTooling 编写一个工具 我对其进行了设置 以便它可以使用 LLVM 文档中的示例进行编译 然而 C C IntelliSense 似乎不适用于 CMake 项目 我的工具位于
  • asp.net c# 防止在从服务器端代码更改索引时触发 selectedindexchanged 事件

    我在同一个 aspx 页面上有两个下拉列表控件
  • 在 .NET 中记录 StackOverflowException

    最近 我的 NET 应用程序 asp net 网站 中出现了堆栈溢出异常 我之所以知道该异常是因为它出现在我的 EventLog 中 我知道 StackOverflow 异常无法被捕获或处理 但是有没有办法在它杀死您的应用程序之前记录它 我
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • 为什么 C# 接口名称前面加上“I”

    这种命名约定背后的基本原理是什么 我没有看到任何好处 额外的前缀只会污染 API 我的想法与康拉德一致response https stackoverflow com a 222502 9898与此相关的question https sta
  • 正在获取“未终止 [] 设置”。 C# 中的错误

    我正在 C 中使用以下正则表达式 Regex find new Regex url
  • 如何确定给定方法可以抛出哪些异常?

    我的问题和这个真的一样 找出 C 中方法可能抛出的异常 https stackoverflow com questions 264747 finding out what exceptions a method might throw in

随机推荐

  • Android开发 Error:The number of method references in a .dex file cannot exceed 64K.

    在Android系统中 一个App的所有代码都在一个Dex文件里面 Dex是一个类似Jar的存储了多有Java编译字节码的归档文件 因为Android系统使用Dalvik虚拟机 所以需要把使用Java Compiler编译之后的class文
  • 【IT之路】微信小程序之美化

    web页面可以使用css样式表来美化 微信小程序页面模块也可以使用样式 相关的样式文件后缀为 wxss 下面我们看下index模块如何给按钮使用样式 一 编写css样式 在index wxss文件中添加如下css样式代码 index wxs
  • SQL添加外键

    创建表时添加 create table 表名 列名 数据类型 CONSTRAINT 外键名 FOREIGN KEY 外键的列名 REFERENCES 主表名 列名 中括号内容可以省略 创建表结束后添加外键 ALTER TABLE 表名 AD
  • MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类

    最近我们被客户要求撰写关于LSTM的研究报告 包括一些图形和统计输出 此示例说明如何使用长短期记忆 LSTM 网络对序列数据的每个时间步长进行分类 要训 练深度神经网络对序列数据的每个时间步进行分类 可以使用 序列对序列 LSTM 网络 序
  • 巧用excel公式提取网址中的域名---超级好用

    巧用excel公式提取网址中的域名 超级好用 经常会整理很多网址 需要按照他们的域名归类 下面是公式 在a1列是我们要整理的网址 b列我们输入公式 MID A1 SEARCH A1 SEARCH A1 1 1 SEARCH A1 SEARC
  • PyWebIO做测试工具

    1 前言 一听到测试开发 大家可能不自觉的挠自己那本已经不多的头发 觉得太难了 又要学习前端的知识 又要学习后台开发的框架 还需要知道在各个后端接口之间如何传递状态 总结来说就是给我们本来不多的发量 雪上加霜 小编今天就给大家推荐一款神器P
  • 全局/静态变量初始化为0出错? 全局/静态变量初始化为0放在bss段还是data段?

    1 有初始化的全局变量 该全局变量存放在data段 2 没有初始值的全局变量放在BSS段 实际上在arm linux gcc这个开发环境中 如果全局变量的初始值是0 编译器会将该全局变量放在BSS段 初始值是0的全局变量放在BSS段会有什么
  • 三种常用的MySQL建表语句

    三种常用的MySQL建表语句 MySQL建表语句是最基础的SQL语句之一 下面就为您介绍最常用的三种MySQL建表语句 如果您对MySQL建表语句方面感兴趣的话 不妨一看 1 最简单的 CREATE TABLE t1 id int not
  • python发短信sim800_如何使用GSM模块SIM800和Arduino Uno发送短信?

    I am trying to send a text message from Arduino through a SIM800 GSM module The message gets to the given number but not
  • 【深度学习500问】DeepLearning-500-questions

    深度学习500问 DeepLearning 500 questions 1 数学基础 2 机器学习基础 2 11 损失函数 2 12 梯度下降 3 深度学习基础 3 2 2 如何计算神经网络的输出 3 2 3 如何计算卷积神经网络输出值 3
  • 创业公司的研发架构:规范化研发流程

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 国内IT公司多如牛毛 但研发流程真正做到规范化的少之又少 很多公司看上去很 大 很NB 但却只可远观 细看内部作业却惊叹于庞大的躯壳下只是一个又一个的 小作坊 毫无团队间协
  • C语言:带你轻松干掉 腾讯笔试大题 带环链表

    链表的分类 链表的种类总共有八种情况有以下组成 带头 不带头 单向 双向 循环 不循环 带环链表与循环链表不同 带环链表 不好找到入环的节点 它是在中间进入循环 而循环链表你只需遍历它的下一个是不是头就能找到了 所以内 带环链表是非常危险的
  • JAVA微信扫码支付模式一功能实现

    一 准备工作 4月份那会发了篇关于 JAVA微信扫码支付模式二功能实现的博客 无数人来追问模式一的开发 所以在这就贴出来 仅供参考 关于模式一和模式二的区别 我有解释过很多次 无非就是模式一的二维码是针对商品的 模式二的二维码是针对订单的
  • Day1-markdown用法和基础语法

    一 标题 在标题内容前加1 6个 然后再按一个空格 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 二 代码引用 输入三个反引号后回车 输入代码的位置 a 10 b abc 注释内容 select from tb student
  • docker安装mongodb(单点)图文详解

    零 说明 此文档目的在于方便大家快速搭建mongodb环境 不影响使用mongodb开发或者学习 不可用于生产 一 docker安装mongodb 1 创建挂载目录 docker volume create mongo data db do
  • 电感选型的关键参数

    电感是一种储能元件 用在LC振荡电路 中低频的滤波电路 DC DC能量转换等等 其应用频率范围很少超过50MHz 从阻抗频率曲线图可知 工作频率低于谐振频率时 电感器件表现出电感性 阻抗随着频率的升高而增大 当工作频率高于谐振频率时 电感器
  • Docker部署RabbitMQ踩坑

    照网上正常部署以后 能够正常登陆 但是页面显示不全 非常痛苦 没有正常显示折线图之类的 显示不全 1 Stats in management UI are disabled on this node 解决方法 进入rabbitmq容器 do
  • 多光谱遥感分类

    多光谱遥感分类 数据集制作 SAE调参 预测 数据集制作 本次实验是多分类 9分类 训练 验证 测试数据来自人工标记的区域 用ArcGIS生成每个点的X Y地理坐标后算出像素的相对位置 data x round data X 331718
  • Umi4 从零开始实现动态路由、动态菜单

    Umi4 从零开始实现动态路由 动态菜单 前言 前期准备 数据表 Mock数据 定义类型 开始 获取路由信息 patchRoutes routes routeComponents 生成动态路由所需的数据 formattedRoutePath
  • Unity(使用GUI制作第一人称鼠标准星)

    属性 简介 方法 注意 准星一般都放在屏幕正中央 所以屏幕的 宽高 2 可得中心点 屏幕宽度 Screen Width 屏幕高度 Screen Height 矩形宽度 自己声明的变量这里使用W代替 矩形高度 自己声明的变量这里使用H代替 准