2016-01-05 18:11:50 angelsmiles 阅读数 13844
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4712 人正在学习 去看看 张刚

unity3d将一张图片切成多张图片

声明:本文内容与代码来源百度贴吧怎么将图集那样N张图片切割出来呢,作者遇到同样问题,在此负责整理。

问题

在独立开发游戏过程中,由于缺乏美术,大部分图都download于网络,遇到需要把一张大图切成多张小图。
如图:
卡通数字

需要切成单个图片再组成Atlas。

解决方法

利用NGUI的Sprite编辑,把图片Texture Type改为Sprite,Sprite Mode改为Multiple,如图所示:

图1

打开Sprite Editor,左上角选择Slice,可以自动切图,或者手动调整,然后应用,自动会生成一张张图片,但此时图片的信息只是存在meta中,重新制作Atlas需要导出图片。
图2

可以写脚本完成。

代码

选中切分后的图片,然后在菜单栏依次选择Assets->Sprite Sheet Packer->Process to Sprites

using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using System.IO;

public static class SpriteSheetPackerImport
{
    [MenuItem("Assets/Sprite Sheet Packer/Process to Sprites")]
    static void ProcessToSprite()
    {
        Texture2D image = Selection.activeObject as Texture2D;//获取旋转的对象
        string rootPath = Path.GetDirectoryName(AssetDatabase.GetAssetPath(image));//获取路径名称
        string path = rootPath + "/" + image.name + ".PNG";//图片路径名称

        TextureImporter texImp = AssetImporter.GetAtPath(path) as TextureImporter;

        AssetDatabase.CreateFolder(rootPath, image.name);//创建文件夹

        foreach (SpriteMetaData metaData in texImp.spritesheet)//遍历小图集
        {
            Texture2D myimage = new Texture2D((int)metaData.rect.width, (int)metaData.rect.height);

            for (int y = (int)metaData.rect.y; y < metaData.rect.y + metaData.rect.height; y++)//Y轴像素
            {
                for (int x = (int)metaData.rect.x; x < metaData.rect.x + metaData.rect.width; x++)
                    myimage.SetPixel(x - (int)metaData.rect.x, y - (int)metaData.rect.y, image.GetPixel(x, y));
            }

            //转换纹理到EncodeToPNG兼容格式
            if (myimage.format != TextureFormat.ARGB32 && myimage.format != TextureFormat.RGB24)
            {
                Texture2D newTexture = new Texture2D(myimage.width, myimage.height);
                newTexture.SetPixels(myimage.GetPixels(0), 0);
                myimage = newTexture;
            }
            var pngData = myimage.EncodeToPNG();

            File.WriteAllBytes(rootPath + "/" + image.name + "/" + metaData.name + ".PNG", pngData);
        }
    }
}

此外

脚本主要用到SpriteMetaDataTextureImporter.spritesheetTexture2D.SetPixel,具体参考官方API文档。

脚本由13471713164原创,本人负责整理。

2013-01-21 14:53:57 jeksonal 阅读数 16776
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4712 人正在学习 去看看 张刚

unity3D 用3DMax 做的模型时需要注意几点

1:方向问题
2:模型尺寸问题

3:模型所占资源大小问题

 

3DMax 做的东西导入到 Unity3D 中,在 Unity3D 引擎中 X 会被反向旋转 90 度();个人处理方式是建模时先将模型 X 轴旋转 90;再调节模型;

3DMax 做的东西导入到 Unity3D 中,由于 3DMax 默认的单位处理机制与 Unity3D 不一样,而导致显示过小的问题;所以,在制作模型前先调节好 3DMax 中的系统单位设置

具体操作:

 菜单栏: 选择 “自定义”  ,

再选择 “单位设置”-- >

 接着点选 “系统单位设置 ”  --->   将系统单位比例设置成:  ;再点击 “ 确定” 保存!

在模型的制作过程当中,为了使物体的坐标在物体的中心点,要记得冻结物体的坐标属性

当模型制作完成时,导出为 FBX 格式时还需注意:

在导出的 设置面板中 :

点击高级选项,然后出现:

确保 “ 场景单位转化为:”的设置为 "Meters"


模型导出后,模型资源可能很大,原因有以下几个:

1: 检测一下材质贴图的格式是否为:.png 的,不是请改过来 ;

2:看模型当中是否有过多的独立存在的物体,将不需要单独 存在给它合并在一块!


要是模型导入到Unity3D 中后,引擎运行变卡,就得看看模型的面是不是太多了!


2016-12-29 14:31:57 qq_36703442 阅读数 1676
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4712 人正在学习 去看看 张刚

蓝鸥免费Unity3D教程讲解  Unity3D学习必看教程

随着AR/VR进入人们的生活,面对AR/VR体验馆的出现,全民开始聊“AR/VR”成为一种社会现象!而作为一款全面整合的专业游戏引擎Unity是一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具。两者之间有什么联系?


到目前为止,针对VR开发的内容,至少有90%是基于Unity3D的平台开发的。换句话说Unity 3D之于VR有什么作用?现在我们正在叩开新时代的大门,Unity3D就是打开这座大门的钥匙。

免费Unity3D教程可以解决什么问题?


所需基础:零基础或C语言基础及其他编程基础   适合人群:游戏开发爱好者

Unity3D学习必看教程解说

在Unity3D的开发过程中,需要学习编程语言!目前Unity所支持C#和JavaScript,而C#开发的项目占90%以上。为了能更好匹配到企业岗位需求,学习C#开发成为众多开发者的首选!

免费Unity3D教程C#入门知识包括:二进制、数据类型,运算符,表达式,控制台语句,关系运算符,循环语句,一维数组,二维数组等。对于有C语言基础或其他编程基础的朋友,C#入门会变得更为容易一些!

C#入门只是让我们对编程语言有一些认识,C#入门的知识点设计可以帮助零基础的朋友,快速入门!而相对于C#入门,C#基础方面知识的学习,开始偏向逻辑性,简单的说是要开始和计算机对话!开始对计算机编辑指令!

免费Unity3D教程C#基础知识包括:枚举类型、结构体、类和对象、字段、方法、抽象类、静止类、封装、继承、构造和析构等,单从这些知识点的名称来说,在学习的过程中需要动用大脑。C#基础的学习并不是一个死记硬背的过程,需要我们举一反三的过程。如果无法做到举一反三,可能需要在C#基础部分,下功夫好好的锻炼是必不可少的。千万不要书到用时方恨少!

在C#学习之后,我们接下来将要步入正题:对Unity引擎的了解,这将是一场没有硝烟的较量!Unity作为一个工具,我们需要对其充分了解,才能更好的运用Unity来实现我们构想。那么,大家对于自己学习Unity有哪些构想?欢迎大家留意讨论!
2017-11-06 20:51:27 RoseChan 阅读数 3451
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4712 人正在学习 去看看 张刚

使用Unity3D自带的图片裁剪功能,实现逐帧图片的裁剪。

1.导入图片资源

这里写图片描述

2.点击选中一张图片,右侧属性面板,SpriteMode选择Multiple

这里写图片描述

这样就认为这张图片是由多张小图片组合而成的。

3.点击SpriteEditor按钮,在弹出的窗口点击Apply,进入图片编辑界面。

这里写图片描述
这里写图片描述

4.在图片编辑界面,点击slice按钮进入切歌菜单,点击slice切割图片,图片会根据分辨率自动切割,再点击右边的apply应用。

这里写图片描述
这里写图片描述

5.切割完成,再次回到资源面板查看图片,点击右边的播放按钮就可以预览到切割后的图片。

这里写图片描述

Tips:如果对切割结果不满意,可以再次回到SpriteEditor界面手动拖出一个区域进行切割。

2018-04-16 22:36:24 AltoriaPendragon 阅读数 331
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4712 人正在学习 去看看 张刚

在进行Unity3D开发的时候我们会接触到很多脚本类,在这里对这些类和它们之间的关系进行一些总结。

首先,在Unity3D的脚本语言系统里,使用了UnityEngine命名空间来盛放Unity3D自己定义的类型。


以下是Unity3D的主要脚本类:

UnityEngine.Application访问应用程序的运行时数据,这个类包含查找信息和控制运行时数据的静态方法。
UnityEngine.ObjectUnity所有对象的基类,所有派生自UnityEngine.Object类的公开变量都会被显示在inspector视窗中。
UnityEngine.Input输入系统的接口,使用这个类能够读取输入管理器设置的按键,以及访问移动设备的多点触控或加速感应数据。
UnityEngine.GUI界面类是Unity手工定制的GUI的接口。
UnityEngine.Physics全局物理属性和辅助方法。
UnityEngine.ResourcesResources类允许你从指定的路径查找或访问资源。
UnityEngine.Time

获取时间信息的接口。



UnityEngine.Object类是Unity3D中所有对象的基类,但是还有一部分类并不继承于UnityEngine.Object类,它们是一些有宏观控制作用的类,如:Application,Input,GUI,Physics,Resources,Time。我们可以用一个关系图来表示:




这是一个大概的印象,具体的还要具体分析。

没有更多推荐了,返回首页