![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
client
文章平均质量分 82
taoqilin
这个作者很懒,什么都没留下…
展开
-
为什么要乘以unity_Scale.w?
// Computes object space view directioninline float3 ObjSpaceViewDir( in float4 v ){float3 objSpaceCameraPos = mul(_World2Object, float4(_WorldSpaceCameraPos.xyz, 1)).xyz * unity_Scale.w;return...原创 2015-11-23 21:05:53 · 1503 阅读 · 0 评论 -
UGUI 里特效的层级
这里说的层级是指特效与UI之间的层级,比如说两张图片之间夹一个特效。一般情况下,我们都会有唯一的UI相机,照所有的UI,而特效也同样可以用这个相机去照,而不用再新建相机了。控制层级可以用sortingLayer或者sortingOrder,这两个属性是renderer下面的,所以UI和特效都是有这两个属性。下面给出个设置特效层级的脚本EffectDepthusing Unit...原创 2015-10-18 14:49:14 · 3792 阅读 · 0 评论 -
ugui记录
ugui用到了RectTransform,对ugui的操作 很多体现在RectTransform上:RectTransform rectT = go.GetComponent<RectTransform>(); if (texture.width > texture.height) { r...原创 2015-04-29 20:36:18 · 547 阅读 · 0 评论 -
随笔记录2
1. unity提供了AndroidJavaClass支持,直接贴源码: if( nativeManager == null ){ using( var jc = new AndroidJavaClass( "cn.easyar.android.NativeManager" ) ) nativeManager = jc.CallStati...原创 2015-04-15 11:02:33 · 456 阅读 · 0 评论 -
随笔记录
1. 动态加载material时,android下调用Shader.Find会找不到对应的Shader,需要提前将将所需的Shader放到Resources下。2. 在android下调试unity,请安装android studio,再将项目发布为google android project,用android studio来调试。3. 感觉多线程在unity下很鸡肋,适合用在...原创 2015-04-13 18:35:40 · 374 阅读 · 0 评论 -
Unity5.0新增AnimatorController
Unity5.0的改动还是蛮大的,而且推出了免费的个人版,所以建议大家最好都能跟进新版本。Unity5新增了UnityEditor.Animations.AnimatorController,他提供了访问AnimatorController下面的状态机和子状态的接口,通过这些接口我们可以访问到具体的AnimationClip。以下是访问具体的AnimationClip的源码://从一个...原创 2015-04-02 17:36:38 · 1993 阅读 · 1 评论 -
修改mesh的clolors属性
using UnityEngine;using System.Collections;public class ExampleClass : MonoBehaviour { void Start() { Mesh mesh = GetComponent<MeshFilter>().mesh; Vector3[] vertices = me...原创 2015-03-30 13:49:01 · 1085 阅读 · 1 评论 -
右键旋转物体
右键旋转物体用Quaternion实现,unity封装的非常好,用AngleAxis即可。其实也可以旋转相机来实现。代码如下:public class RotateComponent : MonoBehaviour { public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 } publ...原创 2015-03-27 11:44:21 · 767 阅读 · 0 评论 -
TextureImporter更改纹理类型
unity导入纹理时,会设置Texture Type:Texture,特点是长宽均为2的幂,导致尺寸与原始图片不同,这就需要我们手动修改纹理的Texture Type,或在代码里修改。类似代码如下:static void ChangeTextureImporter(Texture2D texture) { string path = AssetDatabase....原创 2015-03-26 10:22:33 · 5119 阅读 · 0 评论 -
创建mesh
因为需要自适应纹理的尺寸,所以要创建自己的mesh,mesh由一个或者多个网格组成,每个网格的尺寸比例和纹理的比例一致。现将创建代码贴出来,调用CreateMash即可。<span style="white-space:pre"> </span>private int meshXNum = 1; private int meshYNum = 1;...原创 2015-03-26 20:19:06 · 660 阅读 · 0 评论 -
Animation分解
下面是一段分解animation的代码,具体的接口功能参见apistatic AnimationClip RebuildAniClip(AnimationClip aniClip, bool bUseScale) { AnimationClip newClip = null; EditorCurveBinding[] szClipCurveBinding = Anima...原创 2016-05-18 14:00:34 · 1760 阅读 · 0 评论 -
U3D控制绘制顺序
在PC上,为了得到最准确的渲染结果,绘制顺序可能是从后往前绘制不透明物体,然后在从后往前绘制透明物体。这样会造成overdraws,也就是同一位置的像素被绘制多次。在移动平台上,为了减少overdraws,不透明物体可能是从前往后去绘制,然后在从后往前绘制透明物体。事实上,在Unity中,那些Shader中被设置为“Geometry” 队列的对象总是从前往后绘制的,而其他固定队列(如“T...原创 2015-10-29 11:12:32 · 1597 阅读 · 0 评论 -
随笔
法线是用在光照模型中,使用模型自带的法线或者赋予法线贴图。前向渲染的两种光照模型为: half4 Lighting<Name> (SurfaceOutput s, half3 lightDir, half atten);This is used in forward rendering path for light models thatare notview dir...原创 2015-11-21 19:17:07 · 322 阅读 · 0 评论 -
_WorldSpaceLightPos0的w值
在UnityCG.cginc里,提供了获取世界空间下的光照方向的函数// Computes world space light directioninline float3 WorldSpaceLightDir( in float4 v ){float3 worldPos = mul(_Object2World, v).xyz;#ifndef USING_LIGHT_MULTI_COM...原创 2015-12-09 22:07:47 · 4470 阅读 · 0 评论 -
u3d的对象检测
因为是Hellephant对象下面居然还有个同名的Hellephant对象,悲剧出现了。GameObject.Find("Hellephant")获得的是 下面的那个对象,而我一直以为获取的是外层对象,没有任何报错和提示......原创 2015-03-23 19:22:09 · 480 阅读 · 0 评论 -
参考第三人称Character Controller实现
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">第三人称Character Controller里用到了Character Controller组件,不用刚体,而且老版动画,我略微修改了他的源码,不用Character Controlle...原创 2015-03-23 10:44:40 · 925 阅读 · 0 评论 -
侦听多个按键,造成按键冲突
同时侦听ctrl+space键无效,起初以为u3d不能同时侦听多个按键,后来发现是热键冲突了,但是一时也找不到是与谁的热键冲突。幸亏u3d给出了解决方案。类似ctrl,shift,alt这类键在OnGUI里侦听void OnGUI() { Event e = Event.current; if (e != null &&...原创 2015-03-23 10:35:19 · 884 阅读 · 0 评论 -
sprite, animation部分打包参数备忘
Icon:使用AssetDatabase.GetAssetPath(...)获取该asset相对于project floder的路径。AssetDatabase.LoadAllAssetsAtPath(sprite路径),会获得1个sprite+1个texture2dAssetDatabase.LoadAllAssetRepresentationAtPath(sprite路径),只会获...原创 2016-05-12 20:13:41 · 551 阅读 · 0 评论 -
Unity打包ipa图文教程
转载注明出处:http://www.cnblogs.com/wanglufly/p/4086788.htmlUnity打包ipa图文教程首先保证项目在Unity上运行正常,有时候电脑上运行成功也不代表手机上能运行成功,总之会出现各种问题,还是需要丰富的经验。简单来说,步骤如下:Unity打包IOS---生成XCode项目---配置开发者账号---安装开发者证书(...转载 2016-05-11 16:30:38 · 1965 阅读 · 0 评论 -
Bundle Identifier,Bundle Version,Bundle Version Code区别
Bundle Identifier: ios android公用,字符串,一般格式为com.momo.game,IOS里用于开发者证书Bundle Version: ios android公用,字符串,一般格式为1.2.3,用于显示给用户的版本信息Bundle Version Code:android 特有,数字,anroid版本的内部版本号,可用于区别当前版本是否最新apk,...原创 2016-05-11 16:06:52 · 3364 阅读 · 0 评论 -
Unity打包Android备忘
TFS的Revert 与Update:private void RevertFromTFS(string strLocalPath) { string strCommand = "undo " + strLocalPath + " /recursive /login:" + m_strTfsAccount + "," + m_strTfsPassword; Execut...原创 2016-05-10 20:59:45 · 543 阅读 · 0 评论 -
根据顶点的投影坐标,获取对应的屏幕纹理的纹理坐标
Shader"Custom/Grab"{ SubShader{ Tags{"Queue"="Transparent"} LOD200 GrabPass{} Pass{ CGPROGRAM #pragmavertexvert #pragmafragmentfrag #include"UnityCG.cginc" ...原创 2016-01-04 21:07:56 · 1762 阅读 · 0 评论 -
unity的TRANSFORM_TEX详解
TRANSFORM_TEX定义在UnityCG.cginc里:// Transforms 2D UV by scale/bias property#define TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw)所以使用他有两个前提:1. #include "UnityCG.cginc"2. 定义n...原创 2016-01-04 21:01:29 · 10817 阅读 · 0 评论 -
unity与3DMax的单位问题
3DMax单位设置通过以上设置后,3DMax里制作的1m导入Unity3D也是1m,继续分析原因3DMax“显示单位”和“系统单位”有什么关系显示单位:决定3DMax主面板显示时使用的尺寸单位,下面是分别设置为“厘米”和“米”时的情况数值暂不用关心,看数值后面的单位cm和m,这就是显示单位的设置系统单位:与“显示单位”一起决定,最终存储时记录的单位值(暂且叫“存储...转载 2016-01-02 14:32:33 · 19791 阅读 · 1 评论 -
Unity资源加载与释放
Android,iphone:WWW-------->AssetBundle(Compressed file)------->load(Uncompressed)------>Unload(Release self)webGL:WWW-------->AssetBundle(Uncompressed file)------->load------&g...原创 2016-07-12 11:57:33 · 653 阅读 · 0 评论 -
Unity内存的优化
内存的优化既然要聊Unity3D运行时候的内存优化,那我们自然首先要知道Unity3D游戏引擎是如何分配内存的。大概可以分成三大部分:Unity3D内部的内存 Mono的托管内存 若干我们自己引入的DLL或者第三方DLL所需要的内存。第3类不是我们关注的重点,所以接下来我们会分别来看一下Unity3D内部内存和Mono托管内存,最后还将分析一个官网上Assetbundle的案例来说明...转载 2016-10-12 22:27:29 · 482 阅读 · 0 评论 -
UE4结合boost.coroutine2的设计思路
UE4的Delegate还可以绑定lambda,是很好用的事件系统,可以通过它来实现模块间的脱藕。但是使用Delegate可能引发回调嵌套,导致代码难以阅读及维护。而通过boost.coroutine2可以实现以同步的方式编写异步逻辑,从而避免回调嵌套。coroutine简介:协程可以很轻量的在子例程中进行切换,它由程序员进行子例程的调度(即切换)而不像线程那样需要内核参与,同时也省去了内核线程切...原创 2018-06-11 12:29:57 · 1092 阅读 · 0 评论 -
UE4烘培PackageFileSummary
UE4后面的几个版本在烘培资源时,默认把部分资源数据提取到.exp文件里,这个.exp文件就是资源头文件,里面的数据对应PackageFileSummary类,包含该资源对应的UE4版本号、头部大小、包路径等字段。所以一个资源烘培后生成1个.exp文件+1个.uasset文件。如果想像老版本一样烘培只生成一个.uasset文件的话,可以在项目的DefaultEngine.ini里加上:[/Scri...原创 2018-05-25 16:14:03 · 1259 阅读 · 1 评论 -
UE4网络复制Tips
1.场景里所有的Actor都存在于服务器,Actor的复制只能从服务器到客户端2.Actor可以设置为是否可复制3.Actor里的每个属性可以再单独设置是否可复制;且可以通过宏细化复制细节:只复制到owner Actor所处的客户端还是只复制到simulate Actor所处的客户端 等等4.客户端可以调用标记为Server的方法来修改服务器上的某个Actor的属性,进而触发Actor原创 2017-08-19 16:29:52 · 2105 阅读 · 0 评论 -
UE4的延迟光照
46个灯光,但是Lighting drawing只有一次,归功于延迟光照。forward render与deferred render的区别 见:https://gamedevelopment.tutsplus.com/articles/forward-rendering-vs-deferred-rendering--gamedev-12342原创 2017-07-12 21:10:00 · 1672 阅读 · 0 评论 -
ue4使用regex
FString Gpu = FPlatformMisc::GetPrimaryGPUBrand(); FRegexPattern Pattern(TEXT(".*[Nn][Vv][Ii][Dd][Ii][Aa].*")); FRegexMatcher Matcher(Pattern, Gpu); if (Matcher.FindNext()) { } else { }原创 2016-12-08 15:15:12 · 1549 阅读 · 0 评论 -
FCurlHttpRequest的引用计数
UE4封装的HttpRequest之一为FCurlHttpRequest,FCurlHttpRequest::ProcessRequest有一行代码:FHttpModule::Get().GetHttpManager().AddRequest(SharedThis(this));执行完后,SharedRef的引用计数增加2,分别是在堆里创建的SharedRef,和TArray对每个子原创 2016-11-21 20:11:38 · 616 阅读 · 0 评论 -
TSharedRef,TShadredPtr,TWeakPtr
TSharedRef:static_assert(!TPointerIsConvertibleFromToObjectType, const UObjectBase>::Value, "You cannot use TSharedRef with UObjects.");TShadredPtr:static_assert(!TPointerIsConvertibleFromT原创 2016-11-07 14:11:19 · 3826 阅读 · 0 评论 -
UE4:BindUObject,BindLambda
BindUObject:DECLARE_DELEGATE_OneParam(FDownloadAssetsDelegate, bool);FLoadSchemeDownloadCheck* LoadSchemeDownloadCheck = new FLoadSchemeDownloadCheck;LoadSchemeDownloadCheck->DownloadSchemeDelega原创 2016-11-03 18:14:01 · 2411 阅读 · 0 评论 -
虚幻4 几个常用属性说明及不同之处
BlueprintReadWrite:This property can be read or written from a Blueprint. This operator is incompatible with the BlueprintReadOnly specifier.BlueprintReadWrite:在蓝图(节点)里面可以读写(get和set方法)。Blueprint转载 2016-10-09 16:27:23 · 1053 阅读 · 0 评论 -
visual studio2015 update 3与 ue4.10.4不兼容
新建blank的c++项目时报错,报错如下Running D:/SoftFile/Epic Games/4.10/Engine/Binaries/DotNET/UnrealBuildTool.exe Quikstart1 Development Win64 -project="D:/UEProject/Quikstart1/Quikstart1.uproject" -editorrecompi原创 2016-09-15 08:23:20 · 2202 阅读 · 0 评论 -
深入浅出UE4网络
转载注明出处,http://www.cnblogs.com/Leonhard-/p/6511821.html本文的结构如下:一、UE4网络综述二、UE4中的几种同步方式1.Actor Replication2.Property Replication3.Function Call Replication4.Actor Component Replication5.Generic Subobject...转载 2018-06-22 11:34:00 · 1113 阅读 · 0 评论 -
UE4 client连接server
本文将根据下图逐条对应源码(注:此图从网络获取,感谢该作者):0. 在进行第1步之前,client先执行到在这里实例化UPendingNetGame,并调用InitNetDriver(),从而进入到图中的第1步。1. client方面 UPendingNetGame::InitNetDriver()调用UPendingNetGame::SendInitialJoin()2. server方面 UW...原创 2018-07-02 19:53:40 · 2354 阅读 · 0 评论 -
UE4按键侦听
问题:当World中同时存在多个PlayerController,用户输入会触发哪个PlayerController的侦听?回答:触发侦听的前提是按键的输入被捕获并通知到PlayerController:由UGameViewportClient::InputKey得知只有当前ULocalPlayer持有的PlayerController才会调用InputKeyTips:从用户按键到UE4触发侦听,...原创 2018-07-05 14:50:42 · 3994 阅读 · 0 评论 -
Unity降低Draw Call
DrawCalls:前面说过了,DrawCall是CPU调用底层图形接口。比如有上千个物体,每一个的渲染都需要去调用一次底层接口,而每一次的调用CPU都需要做很多工作,那么CPU必然不堪重负。但是对于GPU来说,图形处理的工作量是一样的。所以对DrawCall的优化,主要就是为了尽量解放CPU在调用图形接口上的开销。所以针对drawcall我们主要的思路就是每个物体尽量减少渲染次数,多个物体最...转载 2016-10-12 22:31:43 · 1623 阅读 · 0 评论