[Unity] 查找资源

有时候需要通过代码来为对象指定一个资源。可以通过下面的函数来查找资源。

    /// <summary>
    /// 查找资源
    /// </summary>
    /// <returns>返回资源对象</returns>
    /// <param name="name">资源名称</param>
    public static T findRes<T>(string name) where T : Object {
        T[] objs = Resources.FindObjectsOfTypeAll<T>();
        if (objs != null && objs.Length > 0) {
            foreach (Object obj in objs) {
                if (obj.name == name)
                    return obj as T;
            }
        }
        return default(T);
    }

示例:

// 将Image的原始图像指定为UGUI自带的UISprite
img.sprite = findRes<Sprite>("UISprite");

效果如下:

时间: 2024-10-27 13:37:23

[Unity] 查找资源的相关文章

Unity 崩溃问题解决方法——之一

友情提示:工作随记,不喜勿喷 注意:文艺青年可以略过,暴力青年欢迎采纳 Library文件夹 Unity每次编译都会生成这个东西,不用担心丢失的问题.所以,干掉他! 选中 + Delete   或者  选中 + Shift  + Delete 网上看了很多方法,就觉得这个简单,粗暴,是我喜欢的类型. 优点:上面说了 缺点:如果工程过大,重新编译时间会比较长.(但是对于查Log日志来说,相对快点)

unity 射线检测

unity中射线检测时非常实用也经常实用的一种手段.下面讲解一下射线检测问题. 1)Ray 根据射线端点和射线的方向定义一条射线 Ray ray= new Ray(transform.position, transform.forward); 定义一个包含射线投射信息的变量RaycastHit hit,并进行射线检测Physics.SphereCast RaycastHit hit; if(Physics.SphereCast(ray,1f,out hit)) { if(hit.distance

关于Unity中的道具拾取(专题六)

原理就是把道具做成触发器,触发器就是当我们有碰撞发生的时候,只会检测碰撞,而不会有任何改变物理运动状态的过程. 触发器非常适合道具拾取,因为它不会改变原本运动物体的任何物理属性,但是依然会检测碰撞,响应物理事件. 道具拾取实例 1.创建Unity项目和文件目录,保存场景 2.导入金币模型资源rc_fx_obj_04_mod.FBX和obj_04_tex.png,设置材质球的shader为Lagacy Shaders---->Diffuse,颜色设置为255,255,255,255 3.创建一个平

关于Unity协程(Coroutine)

协程官方doc解释A coroutine is a function that can suspend its execution(yield) until the given given YieldInstruction finishes. StartCoroutine开启协程 先执行协程中的代码 碰到yield return时控制权交给unity引擎 引擎继续做接下来的工作例如第一次yield return之后执行StartCoroutine下一行代码 直到满足yield指令的要求才会重新进

Unity使用DLL库

Unity3D 能够很方便的集成一些外部插件,以便调用现有的动态链接库.下面会介绍Unity中如何集成Dll的两种方法.1. 标准引用这里所使用的语言是C#. 1.1 新建C#类库项目,这里就不多介绍了. 1.2 项目建好后正常的编写代码 以上是一个简单的测试代码. 1.3 将项目属性 -> 应用程序 -> 目标框架:改为 .NET Framework 3.5或以下 .这一步很重要,因为Unity3D(当前的Unity3D版本是3.5版) 支持的 .Net 是3.5版. 如果选择的是4.0版会

Unity 脚本&lt;1&gt;

RaycastHit2D hit = Physics2D.Linecast(targetPosition, targetPosition + new Vector2(x, y)); 猜测是linecast函数一旦检测到第一个碰撞体之后就会停止检测. 所以把自身检测进去之后就不会检测墙了.估计Physics.Raycast函数也有此性质,这里要注意一下. 2. Unity 2D两种常用判断点击的方法 1.Raycast法 原理相同于3D中得Raycast法,具体使用略有区别. RaycastHit

Unity编辑器扩展chapter1

Unity编辑器扩展chapter1 unity通过提供EditorScript API 的方式为我们提供了方便强大的编辑器扩展途径.学好这一部分可以使我们学会编写一些工具来提高效率,甚至可以自制一些小的插件应用的项目工程中去,达到复用的目的.今天首先创建一个新场景生成的菜单项,生成的场景已经绑定好需要的游戏对象及脚本. Tips:1.官方API 2.编辑器扩展脚本都需放在Editor文件夹下,Editor的层级和数目没有要求 EditorUtil.cs :编辑器扩展类,向外部提供编辑器扩展方法

Unity Update 详解

0x01:简介 Unity的脚本继承了Monobehaviour类,在脚本中定义函数: void FixedUpdate(){} void Update(){} void LateUpdate(){} 脚本如果是激活的,这三个函数会被上层逻辑每帧调用,FixedUpdate调用的次数和fixedTime有关,后面详细介绍,Update和LateUpdate每帧调用一次. 0x02:实现 一般游戏流程都类似下面代码示例: /*************************************

unity 5.3 的 JSON Serialization

孙广东  2015.12.23 JSON 序列化功能和从 JSON 格式 转换到 对象.与 web 服务交互,或只是为了打包和拆包数据 到一个基于文本的格式很容易,这可以非常有用. 使用简单      JSON 序列化功能是围绕一个'structured'的 JSON,意味着你描述变量将要存储在您的 JSON 数据中通过创建一个类或结构的概念.例如: [Serializable] public class MyClass { public int level; public float time