属性

简介

方法

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

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

  1. 利用Python制作第一人称射击小游戏 含源代码

    大家好 我是毕加锁 (锁!) 今天教大家利用Python制作第一人称小游戏 涉及知识点 1.sprites 2.pygame混音器 3.图章    4.python基础语法 .代码 1发射声 from ...

  2. 【unity】游戏的第一人称编写,限制角色视野范围,unity的Rotate使用情况区分一次搞懂

    刚开始学习unity的时候很容易对众多的API搞糊涂,特别是博客里很多博主的写作思路十分混乱,完全不能看懂,看了书之后感觉清晰了很多,总结一下. 如果你还分不清世界坐标系和Self坐标系,建议先去看下 ...

  3. Unity VR学习:第一人称射击游戏(1)

    Unity VR学习:第一人称射击游戏(1) 1.封装标签和场景淡入淡出效果实现 (1) 封装标签 1.标签有Player,Enemy,GameController,Fader(画布),MainCam ...

  4. unity之使用FPS第一人称后鼠标消失

    我在使用standard assets里的fps第一人称视角开始游戏后,鼠标消失,后来发现是fps默认将鼠标锁住,只需要找到并点击fps脚本里的mouse look下的Lock Cursor,再次运行 ...

  5. Unity 3D建筑内部第一人称漫游,房间切换漫游

    在Unity中经常用到第一人称漫游,比较常用的是用Unity Assets中导入的Charaters包,里面包含第一人称控制器和第三人称控制器,将第一人称控制器拖入场景中就可以用AWSD实现前后左右移 ...

  6. UE4C++(10):制作第一人称射击游戏

    10/15/2020 文章目录 添加日志消息 游戏模式(AGameModeBase) 角色类(Pawn) 为什么使用C++还要使用蓝图 注意事项! 实现发射物 创建球体碰撞组件 发射物运动组件 实现射 ...

  7. 【Unity学习笔记】第一人称射击游戏

    1.新建一个地面Plan. 2.搭建好Player模型.把枪的模型拖入,调整好角度.由于是第一人称游戏.把camera也拖入Player下. 3.编写playerMove脚本,实现asdw控制人物的前 ...

  8. unity中自制模拟第一人称视角

    public float sensitivityX = 5f; public float sensitivityY = 5f; public float sensitivetyKeyBoard = 0 ...

  9. ThingJS平台制作第一人称视角下的巡更效果

    今天想要做一个类似巡更的过程,就像是在学校保安巡更,小区保安巡更一样.巡更需要用到相应的场景,比如说:园区.学校.超市以及工厂等等,然后需要规划好路线也就是巡更的路线,并且视角要跟随路线来变换,从而达 ...

最新文章

  1. Selenium2+python自动化46-js解决click失效问题
  2. 下列代码的执行结果是 php,执行下列代码后的结果是: $x=15; echo $x++; $y=20; echo ++y;...
  3. Spring-AOP实现的两种方式
  4. Angular Component的DOM级别的单元测试方法
  5. Android一个简单易用的进度条
  6. [建议]我对博客园的发展的一点想法
  7. [小说连载]张小庆,在路上(2)- 兰博和威震天
  8. Team Viewer 远程链接一直显示-正在初始化显示参数
  9. Win32扫雷(根据以前的控制台扫雷实现)
  10. 怎样将图片制作转换圆形图片
  11. nodejs代码将word转成图片
  12. 计算机视觉、图像处理学习资料汇总
  13. Echars 旭日图 鼠标浮动 显示value值
  14. 三:Sensor SLPI层代码分析---
  15. 网页打开新窗口——Window.open()详解
  16. 请广大编程爱好者加入QQ群5907439
  17. 精英计算机主板,精英主板
  18. kinetics-skeleton格式行为数据提取方法
  19. 上架发布应用市场资料准备iOS和Androd
  20. Ubuntu安装Go环境以及GoLand编辑器

热门文章

  1. 调用百度地图获取路线,修改覆盖物样式
  2. GIT使用踩坑!!!我的妈妈呀,烦死了烦死了烦死了!!!
  3. 浙大链协Web3.0系列Workshop启动!
  4. android内容复制到剪贴板
  5. Internet协议——IP
  6. 如何使用csapp文件
  7. 1号牧场风光互补供电系统设计
  8. 二维数据热力图的绘制
  9. 股票投资长期持续稳定盈利 ​(干货)
  10. 江苏大学c语言程序设计考试试卷,江苏大学基础及C()试卷_1.doc