参考文章:Unity小地图的实现_伊蕾娜^_^的博客-CSDN博客_unity 小地图
起因:自制软件在调下方电阻箱旋钮时,要一直观看右上角屏幕的示数。
稍微一放大摄像头两者就只能看见其一。
我想让仪器屏幕示数一直显示在显示屏上。变成这个亚子
开一个空项目。新建一个示例圆柱和Camera并重命名为MiniCamera,移动MiniCamera直到能观察到圆柱顶(不用管Game面板显示的是哪一个Camera)
在Project面板新建Render Texture(右键Create---Render Texture),重命名为MiniTexture
点击MiniCamera,调整他的Inspector面板。
Projection模式换为Orthographic(由透视摄像机切换成正交摄像机,因为我只需要2D的效果)
将才新建的MiniTexture拖到Target Texture里(摄像机就把实时渲染的结果存储到这张纹理图中)
关掉Audio Listener
根据实际情况调整Size,让圆柱顶在MiniCamera里看起来大些
在 Hierarchy面板里新建一个Canvas,在其下建立一个Image(和Canvas在同一个子面板里),作为背景,调为透明,并调整Image至合适的位置(比如右上角)
以防万一讲一下操作,点Hierarchy面板里刚新建的Image,在Inspector里点圈1处的Color,把圈2处的A拉到最低
在Image上右键创建Raw Image
把MiniTexture拖到Texture上
此时Game面板上已经可以看到还凑合的子屏幕的效果了
接下来要控制子屏幕的缩放。直接再在Image上右键创建两个Bottom(我装了TextmeshPro)
直接进行一个重命名的F2操作,确保顺序是RawImage在两个Bottom上面,不然子屏幕放大后会遮挡住按钮
给Bottom上对应的图片 懒得做放大的图标就随便拿了个√图片凑一下 上面调大小下面塞图片
如果懒得做图片,可以点开ButtonBig下的Text(TMP),在右侧的Text Input下输入加号“+”,下面的Font Size调大小。ButtonSmall用减号同理。不确定没有TextMeshPro行不行。反正我有就不管了,教程这么详细啰嗦就是为了方便自己回忆
头秃,到了写Button脚本的时候了,在Project面板里右键新建C#Script 重命名为MiniC
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MiniC : MonoBehaviour
{
void Start()
{
}
void Update()
{
}
public float pngMoveSpeed;
public void OnClickBig()
{
Vector3 v3 = transform.localScale;
transform.localScale = new Vector3(v3.x * 2f, v3.y * 2f, v3.z * 2f);
transform.Translate(-transform.up * pngMoveSpeed);
transform.Translate(-transform.right * pngMoveSpeed);
}
public void OnClickSmall()
{
Vector3 v3 = transform.localScale;
transform.localScale = new Vector3(v3.x * 0.5f, v3.y * 0.5f, v3.z * 0.5f);
transform.Translate(transform.right * pngMoveSpeed);
transform.Translate(transform.up * pngMoveSpeed);
}
}
//直接全选--复制--自己的脚本--全选--粘贴--保存
选择RawImage,把才抄的MiniC直接拖到Add Component 上
脱完托完顺手设置一下Png Move Speed,自己调个合适的
点Hierarchy面板里的ButtonBig,然后点OnClick() 下的小加号,增加一个点击响应事件
将RawImage拖到 None(Obje 的位置
点 1 的位置
选OnClickBig()。ButtonSmall同理,选OnClickSmall()
测试一下,点一点加号,还行,教程结束