【Unity】拖动图片生成对应Image
写在前面
- 拼UI时会用到多个Image,一般操作是:①新建一个Image,②拖入Image用到的图片,③SetNativeSize,④关闭不必要的raycastTarget 。为了能尽快拼完UI,我写了个工具替我完成以上①②③④步。因为原先Unity就有拖动图片到对象上自动生成对应Sprite的操作,这个工具覆盖了这个操作,现在拖动图片会生成对应Image,自动SetNativeSize,自动关闭raycastTarget。
- 本工具脚本名为CreateImage.cs,不一定要放在Editor文件夹下。
完整代码
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;
using Object = UnityEngine.Object; /// <summary>
/// 从Project窗口拖动图片到Canvas下任意层级,自动生成对应Image
/// 会覆盖原生成Sprite操作
/// </summary>
public class CreateImage
{
/// <summary>
/// 总开关
/// </summary>
public static bool Switch = true; private static bool isTrigger = false; [InitializeOnLoadMethod]
private static void Init()
{
if (!Switch)
{
return;
}
EditorApplication.projectWindowItemOnGUI += ProjectWindowItemOnGui;
EditorApplication.hierarchyWindowChanged += HierarchyWindowChanged; } private static void ProjectWindowItemOnGui(string guid, Rect selectionRect)
{
if (!Switch)
{
return;
}
// 拖动图片出Project窗口时
if (Event.current.type == EventType.DragPerform || Event.current.type == EventType.DragUpdated || Event.current.type == EventType.DragExited)
{
isTrigger = true;
} } private static void HierarchyWindowChanged()
{
if (!Switch)
{
return;
}
if (!isTrigger)
{
return;
}
// 此时Unity会默认创建Sprite并定位到该GameObject上
GameObject go = Selection.activeGameObject;
if (go == null)
{
return;
}
SpriteRenderer spriteRenderer = go.GetComponent<SpriteRenderer>();
if (spriteRenderer == null)
{
return;
}
go.name = "Image";
RectTransform rt = go.AddComponent<RectTransform>();
rt.localPosition = Vector3.zero;
rt.localScale = Vector3.one;
Image image = go.AddComponent<Image>();
image.raycastTarget = false;
image.sprite = spriteRenderer.sprite;
Object.DestroyImmediate(spriteRenderer);
image.SetNativeSize(); isTrigger = false; } }
【Unity】拖动图片生成对应Image的更多相关文章
- Unity UGUI实现鼠标拖动图片
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; ...
- thinkphp3.2与phpexcel带图片生成 完美案例
thinkphp3.2与phpexcel完美案例 // 导出exl public function look_down(){ $id = I('get.id'); $m = M ('offer_goo ...
- phpcms v9图片生成缩略图变成黑色解决方法
今天客户反映,上传的图片生成缩略图有的图片变成黑色,出现问题就百度了一下,有不少网友也遇到这样的问题,但是官方论坛也没有给出解决办法,那还得靠自己解决了,于是就研究phpcms v9 图片压缩代码.打 ...
- 验证码图片生成工具类——Captcha.java
验证码图片生成工具,使用JAVA生成的图片验证码,调用getRandcode方法获取图片验证码,以流的方式传输到前端页面. 源码如下:(点击下载 Captcha.java) import java. ...
- CSS3鼠标移入移出图片生成随机动画
今天分享使用html+css3+少量jquery实现鼠标移入移出图片生成随机动画,我们先看最终效果图(截图为静态效果,做出来可是动态的哟) 左右旋转 上下移动 缩放 由于时间关系我就不一步步解析各段代 ...
- Unity 截取图片并且显示出来
Unity 截取图片并且显示出来 近期用到了unity的截图,并且把他显示出来,摸索了很多! 讲解一个东西,android可以存储一些文件在本地,比如配置文件等! 对于不同的系统,方法不一! if ( ...
- Android BaseAdapter Gallery 画廊视图 (左右拖动图片列表拖至中间时图片放大显示)
画廊视图使用Gallery表示,能够按水平方向显示内容,并且可以手指直接拖动图片和移动,一般用来浏览图片,,被选中的选项位于中间,并且可以响应事件显示信息.在使用画廊视图时,首先在屏幕上添加Galle ...
- Android长方形图片生成正圆形,以及矩形图片生成圆角
一般要做正圆形图片,只能是正方形的基础上才能实现,否则就变成椭圆了,下面说说如何使长方形的图片生成正圆形图片 废话不多说,没图没真相,先上图吧: 原图: 变成正圆后: 下面上代码: public ...
- java 图片生成缩略图后,转化成流
功能:图片生成缩略图后,转化成流 public class ImageUtils { /** * * @param in1 * 文件流 * @param uploadFileName * 文件名称 * ...
- js 选择图片生成base64数据
<!doctype html> <html> <head> <meta charset="utf-8"> <meta http ...
随机推荐
- leetcode-36-有效数独,leetcode-37-求解9*9数独
#include <iostream> #include <vector> #include <utility> #include <unordered_ma ...
- git log 的常用用法
1.最基本的 git log 2.简化版本 git log --oneline 3. 作者筛选 4.时间筛选 git log --since="2022.05.26" --unti ...
- docker和常用的中间件安装汇总
一.背景:近期整理环境,汇总了下docker 安装常用的中间件,方便我们自己搭建个人的开发环境,做个记录 1.首先是docker 本身(centos)的安装: # 旧版本卸载 sudo yum rem ...
- shopt 内置命令启用shell选项 (extglob)
使用shopt 内置命令启用shell选项 (extglob) 则会识别几个扩展模式匹配运算符 模式列表是由 | 分割 查看shell选项 extglob shopt |grep extglob 启动 ...
- android studio的一些辅助工具
目录配置 https://blog.csdn.net/Kideers/article/details/128233984 https://blog.csdn.net/hnjcxy/article/de ...
- Linux工作中最常用命令整理
ls 命令:显示指定工作目录下之内容 ls -a # 显示所有文件夹,包含隐藏的. 和.. ls -l # 显示文件的详细信息,包含文件形态,权限,所属,大小,其实就是平常用的 ll ll -h # ...
- 很抱歉,无法安装Office(64位),因为您的计算机上已经安装了这些32位Office程序
可使用下面的方法获取最新最全的Win10 KEY: 1.请加微信公众号号:jiangivana 或扫一扫下面的二维码. 2.加微信公众号以后回复[key]将获得最新最全的Win10密钥. 64位与32 ...
- Oracle11gR2安装
https://blog.csdn.net/newbie_907486852/article/details/80716275
- vim中的命令行 %! 是啥意思?
:%! command pipes the current file's contents to command's stdin, and replaces the file's contents w ...
- interpreting non ascii codepoint
ProtoBuf 在Windows VS2019 C++平台上的使用 这两天想着了解一下protobuf,搜索了一篇博客照着弄了一下 https://blog.csdn.net/weixin_4478 ...