写在前面

  • 拼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的更多相关文章

  1. Unity UGUI实现鼠标拖动图片

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; ...

  2. thinkphp3.2与phpexcel带图片生成 完美案例

    thinkphp3.2与phpexcel完美案例 // 导出exl public function look_down(){ $id = I('get.id'); $m = M ('offer_goo ...

  3. phpcms v9图片生成缩略图变成黑色解决方法

    今天客户反映,上传的图片生成缩略图有的图片变成黑色,出现问题就百度了一下,有不少网友也遇到这样的问题,但是官方论坛也没有给出解决办法,那还得靠自己解决了,于是就研究phpcms v9 图片压缩代码.打 ...

  4. 验证码图片生成工具类——Captcha.java

    验证码图片生成工具,使用JAVA生成的图片验证码,调用getRandcode方法获取图片验证码,以流的方式传输到前端页面. 源码如下:(点击下载  Captcha.java) import java. ...

  5. CSS3鼠标移入移出图片生成随机动画

    今天分享使用html+css3+少量jquery实现鼠标移入移出图片生成随机动画,我们先看最终效果图(截图为静态效果,做出来可是动态的哟) 左右旋转 上下移动 缩放 由于时间关系我就不一步步解析各段代 ...

  6. Unity 截取图片并且显示出来

    Unity 截取图片并且显示出来 近期用到了unity的截图,并且把他显示出来,摸索了很多! 讲解一个东西,android可以存储一些文件在本地,比如配置文件等! 对于不同的系统,方法不一! if ( ...

  7. Android BaseAdapter Gallery 画廊视图 (左右拖动图片列表拖至中间时图片放大显示)

    画廊视图使用Gallery表示,能够按水平方向显示内容,并且可以手指直接拖动图片和移动,一般用来浏览图片,,被选中的选项位于中间,并且可以响应事件显示信息.在使用画廊视图时,首先在屏幕上添加Galle ...

  8. Android长方形图片生成正圆形,以及矩形图片生成圆角

    一般要做正圆形图片,只能是正方形的基础上才能实现,否则就变成椭圆了,下面说说如何使长方形的图片生成正圆形图片 废话不多说,没图没真相,先上图吧: 原图:  变成正圆后:  下面上代码: public ...

  9. java 图片生成缩略图后,转化成流

    功能:图片生成缩略图后,转化成流 public class ImageUtils { /** * * @param in1 * 文件流 * @param uploadFileName * 文件名称 * ...

  10. js 选择图片生成base64数据

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta http ...

随机推荐

  1. 自动化处理日志脚本 shell

    自动处理脚本 保留7天的,带详细时间戳, #!/bin/sh #description split logs file1=/var/log/messages file2=/var/log/rabbit ...

  2. Fortran笔记 派生类型-整理版

    以下为整理后的笔记,英文原文 Introduction to Modern Fortran for the Earth System Sciences, 英文翻译 https://www.cnblog ...

  3. div垂直居中的4种方式方式

    一.使用单元格居中 <!DOCTYPE html> <html> <head> <title>测试</title> </head> ...

  4. PCA降维练习

    [题目] 1.现有我国大陆30个省.直辖市.自治区的经济发展状况数据集如表所示,包括8项经济指标:国民生产总值(A1):居民消费水平(A2):固定资产投资(A3):职工平均工资(A4):货物周转量(A ...

  5. gateway 网关接口防篡改验签

    gateway 网关接口防篡改验签 背景:为了尽可能降低接口在传输过程中,被抓包然后篡改接口内的参数的可能,我们可以考虑对接口的所有入参做签名验证,后端在网关依照相同的算法生成签名做匹配,不能匹配的返 ...

  6. Linux profile、bashrc、bash_profile

    一.profile 文件 1.profile 文件的作用 profile(/etc/profile),用于设置系统级的环境变量和启动程序,在这个文件下配置会对所有用户生效.当用户登录(login)时, ...

  7. Java-对象 认识对象

    1.对象同时具有属性和方法两个特性.对象的属性和方法通常被封装在一起,共同体现事物特性,两者相辅相成,不可分割

  8. Java语言出现的背景、影响及应用前景分析

    一.背景 1991年 ,SUN MicroSystem公司的 Jame Gosling. Bill Joe等人 ,为在电视.控制烤面包箱等家用消费类电子产品上进行交互式操作而开发了一个名为Oak的软件 ...

  9. 1.win10安装centos虚拟机并设置允许远程

    一.下载并安装 打开如下连接,下载VMware和CentOS7镜像安装好虚拟机 http://t.zoukankan.com/onlymate-p-9837651.html这个链接的镜像是7.0的,我 ...

  10. SAP GGB0 校验

    需求,针对财务凭证分配号的要求 在满足条件下进行必填校验 在需要的位置 创建确认 创建步骤,一般通过点击就可以形成需要的前提逻辑,也可以通过 设置->专门方式 来进行自定义编写. 如果前提条件是 ...