1、Direct3D初始化   1、创建一个Win32项目(现在叫Windows桌面向导),命名为“InitD3D”。 2、创建一个h文件,命名为“d3dUtility.h”。在创建两个cpp文件,分别命名为“d3dUnit.cpp”和“d3dUtility.cpp”。 3、在项目上面右键选择最下面的属性,然后在VC目录里面配置好我们需要的DirectX的头文件和库文件。 4、d3dUtility.h头文件源代码 ifndef__d3dUtilityH__ define__d3dUtilityH__ include<Windows.h> // //XNA数学...

  jo5M4GCiOHdG   2023年11月12日   18   0   0 DirectXDirectX学习

在我刚刚开始学习DirectX的时候,在配置环境上面花了好几天时间,下面就一步一步说一下这个非常非常烦人的过程。 首先,我去官网下载了DirectX11。 一.工具准备 1.DirectX11SDK安装包 安装包选择微软官网下载,我选择的SDK版本是DXSDK_Jun10.exe。下载网址:https://www.microsoft.com/en-us/download/details.aspx?id=6812 按照安装提示安装完成。 注意DXSDK_Jun10.exe的安装过程中可能会出现安装错误,如下图: 解决方法参考这里:http://www.cnblogs.com/Ray102...

  jo5M4GCiOHdG   2023年11月12日   15   0   0 DirectXDirectX学习

快速,易于理解的教程,用于学习MicrosoftDirectX光线跟踪的基础知识。1、什么是DirectX光线追踪? 在2018年游戏开发者大会上,Microsoft引入了DirectX12的另一种功能,称为DirectX光线追踪(DXR),该API可以轻松在DirectX中使用GPU加速的光线追踪,并可以与传统的DirectX光栅化实现简单的互操作性。与大多数其他GPU加速的光线跟踪API不同,没有专门的互操作性考虑因素允许光栅化器和光线跟踪器有效共享GPU资源。取而代之的是,可以在光栅化和光线跟踪之间轻松地重复使用相同的资源。另外,作为Microsoft标准,这应该可以编写跨供应商...

  jo5M4GCiOHdG   2023年11月12日   18   0   0 DirectXDirectX学习

  1 CreateXMLDocument创建所需的XML文档 2 AudioManager音频管理器脚本 3 UIManager界面交互控制 4 Finish测试运行 游戏效果:   1 CreateXMLDocument ——创建所需的XML文档   注意路径: 我的XML文档”Dialog.xml”放在了 Assets 目录下创建的一个 Data 目录中 如果名字不一样,需要改名 或者直接修改解析XML代码中的读取路径,为你自己的路径 document.Load(Applicati...

  jo5M4GCiOHdG   2023年11月12日   20   0   0 Unity教程Unity

很多时候我们需要把具有相同shader的材质球合并,从而减少drawcall的产生。  比如九龙战里面,一个人物带有10个部位,10个部位各自来自不同的fbx文件,加上身体,就有11个材质球,占上11个drawcall。如果主城里面跑着10个角色,光人物就占了110个drawcall!所以这种时候材质球合并是必须的。 (下图为九龙战里面的多部位换装效果) 材质球合并,分以下几步走,首先我们讨论普通的MeshRenderer的材质球合并,然后再讨论SkinnedMeshRenderer的材质球合并。 普通的MeshRenderer的材质球合并: 1.合并所有材质球所携带的贴图,新...

  jo5M4GCiOHdG   2023年11月12日   12   0   0 Unity教程Unity

无论是AAA级的主机游戏,还是层出不穷的移动端游戏,角色换装几乎都是必不可少的功能,有的甚至是核心功能,像暗黑3和魔兽世界的幻化系统(如图1)。这个功能没什么新鲜点。网上关于Unity换装的文章不胜枚举,我再添一篇也没意思,本系列旨在通过换装功能的实现,来讲解一些被Unity引擎所隐藏起来的那些细节。                         &nbs...

  jo5M4GCiOHdG   2023年11月12日   14   0   0 Unity教程Unity

在前置篇中,基本上梳理了一下换装功能背后涉及到的美术工作流。但程序员嘛,功能终归是要落到代码上的。本文中会结合Unity提供的API及之前提到的内容来实现一个简单的换装功能。效果如下:                                  &nbsp...

  jo5M4GCiOHdG   2023年11月12日   10   0   0 Unity教程Unity

Avatar换装是MMO游戏不可缺少的一部分,一个人物模型通常可拆分为头、身体、手臂、腿、武器等部分,如何将这些部分组合到一起呢?本文将阐述如何将在Unity中实现人物模型的换装功能。 资源准备 1.每一套装备模型必须使用同一套骨骼,并单独将骨骼数据保存成一个Prefab。红色部分为武器挂节点(也可以把武器做成一个SkinnedMesh,不采用挂接点的形式),骨骼数据在Unity中的展示形式就是Transform。 2.将模型拆分成多个部分,将每一个部分单独保存成Prefab,武器也单独保存为一个Prefab 每一个Prefab都含有自身的SkinnedMeshRenderer。...

  jo5M4GCiOHdG   2023年11月12日   19   0   0 Unity教程Unity

了解渲染顺序非常的有必要,是大家少犯错的基本要求之一。   Unity中的渲染顺序自上而下大致分为三层。最高层为Camera层,可以在Camera的depth那里设置,设置之后,图形的渲染顺序就是先绘制depth低的相机下的物体,再绘制depth高的相机下的物体,也就是说,depth高的相机会覆盖depth低的相机(具体的覆盖关系有don'tclear,solidcolor等等几种)   比Camera层稍低一层的是sortinglayer层,随便找一个可以设置sortinglayer的地方,选择sortinglayer,点添加按钮,就可以看到当前所有的sorting...

  jo5M4GCiOHdG   2023年11月12日   12   0   0 Unity教程Unity

单例模式是所有设计模式之中运用最广泛的设计模式之一,而对象池在游戏中相当常用,通过对GameObject的反复利用,能节约宝贵的CPU资源。在本篇文章中将给大家分享下在项目中使用单例模式与对象池的技巧。     单例模式   单例模式,简单说就是类的实例在内存中只存在一份,其中单例模式有2种写法:   首先,是继承自MonoBehaviour的单例,需要使用U3D组件和功能可以用这种单例。理解U3D本身单例写法的机制就知道为啥要这么写了,第一个挂载脚本的对象,就是该单例,后面再怎么重复挂载是无效的。因为挂载的时候就实例化该类了。 publicst...

  jo5M4GCiOHdG   2023年11月12日   14   0   0 Unity教程Unity

1、Thread 多线程   Unity里一般用于Socket连接,开一条线程接消息。   2、Queue队列   对象的先进先出集合,可以规定特定类型的队列集合,也可以什么类型都存入队列。 Queueaaa=newQueue();  Queue<int>aaa=newQueue<int>();都是可以的。   3、lock关键字   主要用于处理并发问题、锁定独占对象。锁定的必须是引用类型!   先写一个线程类,不用继承MonoBehaviour。 publicclassX...

  jo5M4GCiOHdG   2023年11月12日   13   0   0 Unity教程Unity

很多玩家喜欢把游戏中一些自己喜欢的画面选择截图保存下来,本篇文章就介绍下如何做一个截图的功能,并且玩家可以在相册中看到。   分为两个部分来介绍,第一个部分是截图,用Application.CaptureScreenshot方法即可实现;第二部分就是保存到相册,获取图片保存的路径即可。   直接上代码: privatestaticstring_TextureUrl; publicstaticstringTextureUrl { set{_TextureUrl=value;} get { if(_TextureUrlnull) { //"/sdcard/Pictures...

  jo5M4GCiOHdG   2023年11月12日   18   0   0 Unity教程Unity

玩过射击类游戏,里面的狙击枪是带有瞄准镜的,可以方便玩家可以瞄准远处的敌人,本篇文章要介绍的就是这个功能的实现,通过Camera来制作一个瞄准镜的效果。   主要的方法就是通过调整Camera的FieldOfView,让其渐大渐小来实现。   当我们瞄准的时候,我们只需要将FieldOfView变小,停止瞄准的时候,再将FieldOfView恢复成原来的大小。   代码如下: if(Mathf.Abs(Camera.main.fieldOfView-(initFOV/ZoomLevel))<0.5f) { Camera.main.fieldOfView...

  jo5M4GCiOHdG   2023年11月12日   10   0   0 Unity教程Unity

为什么要写框架? 很简单 能让开发者更加从容的面对复杂多变的需求。 能让你的代码结构更加的清晰,而不是乱七八糟的一堆东西堆在一起。 能让你的代码有质量,有可读性,好的延展性和交接性。 能让你的思维更加的全面,从面向过程真正的变成面向对象。 需要准备哪些知识做基础准备? 至少精通一门面向对象的语言CCJava都行。 熟悉常见数据结构,常见算法。 熟悉一些很常用的设计模式,观察者,工厂,单例,单一职责等等。推荐图书:《大话设计模式》。 对网络游戏的开发流程有一个比较清晰的概念。 最好可以有一些3D数学基础,图形学基础。 游戏框架应该包含哪些内容? 内容有点多:   感觉有点看不...

  jo5M4GCiOHdG   2023年11月12日   16   0   0 Unity教程Unity

在看电影的时候,没有字幕总觉得很别扭,尤其是英语电影,对于英语不好的人来说,就一定需要有个中文字幕存在,下面这篇就给大家分享下在Unity中实现一个简单的字幕轮播效果。 代码如下: usingSystem.Collections; usingSystem.Collections.Generic; usingSystem.IO; usingUnityEngine; usingUnityEngine.UI; usingSystem; publicclassMovieText:MonoBehaviour { //用来显示字幕的TextUi publicTextTitles; //文件流,用...

  jo5M4GCiOHdG   2023年11月12日   8   0   0 Unity教程Unity

游戏的屏幕是有尺寸的,意味着视野的范围就会受到限制,在开发过程中或多或少遇到这种情况,某个怪物在视野范围外但是收到技能攻击也会造成伤害或死亡,针对这种情况,就是这篇要给大家分享的重点,实现视野范围外死亡敌人的分数显示在屏幕内。   本篇使用的例子是使得场景中的物体显示在屏幕内,也可以使用UGUI物体的显示,但是换算方式上刚好相反。 如下脚本,脚本挂在分数物体上: usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; publicclassTest01:MonoBehaviour...

  jo5M4GCiOHdG   2023年11月12日   12   0   0 Unity教程Unity

有些不涉及U3DAPI的计算可以放在分线程里,能提高多核CPU的使用率。   总结:   1.变量(都能指向相同的内存地址)都是共享的   2.不是UnityEngine的API能在分线程运行   3.UnityEngine定义的基本结构(int,float,Struct定义的数据类型)可以在分线程计算 如Vector3(Struct)可以,但Texture2d(class,根父类为Object)不可以。   UnityEngine定义的基本类型的函数可以在分线程运行,如 inti=99; print(i.ToString()); Vec...

  jo5M4GCiOHdG   2023年11月12日   16   0   0 Unity教程Unity

问: (1)TRANSFORM_TEX是做什么的 (2)float4_MainTex_ST中的_MainTex_ST变量也没有用到,为啥非要声明一下?     答: (1)简单来说,TRANSFORM_TEX主要作用是拿顶点的uv去和材质球的tiling和offset作运算,确保材质球里的缩放和偏移设置是正确的。(v.texcoord就是顶点的uv)     下面这两个函数是等价的。 o.uv= TRANSFORM_TEX(v.texcoord,_MainTex);   o.uv=v.texcoord.xy_MainTex_ST...

  jo5M4GCiOHdG   2023年11月12日   15   0   0 Unity教程Unity

 第一种方法 第一步  在Project下新建一个RenderTexture  第二步 新建一个游戏对象我这里命名为Img-player挂上一个RawImage用来显示人物 拖入刚刚创建的 RenderTexture  第三步 新建一个相机  拖入刚刚创建的 RenderTexture 将模式改为下面的样子Camera为正交Orthographic 将模型拖入此相机的视野中如果模型不清楚可以缩放 调下面的SizeFar参数到合适程度 已把人物模型全包括上下左右旋转也不出相机范围为...

  jo5M4GCiOHdG   2023年11月12日   13   0   0 Unity教程Unity

当所用的图片资源放到场景中大小不合适的时候,通常我们会手动修改他的Scale去让他变成合适的大小。 但是这样做第一不精确,第二如果是与屏幕大小有关的(比如覆盖全屏或者等于屏幕的长或者宽),一旦屏幕的分辨率改变,就会出现缺口,除非你把Scale修改的很大。 所以我们可以用代码来实现简单的自适应。 比如下面这块草地,我想让他与屏幕等宽。 给他添加脚本,添加代码  privatevoidStart() { Resize(); } privatevoidResize() { floatwidth=Screen.width; floatheight=Screen.height; f...

  jo5M4GCiOHdG   2023年11月12日   17   0   0 Unity教程Unity
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~