选自过去1~2周 自己所看到外文内容:https://twitter.com/unity3d 和各种其他博客来源吧
1、
1)Unity x Android Studio混用經驗分享---Laird / 果思設計 資深工程師 【台湾】
2)關於Unity快速搭建3D場景的最最最入門小技巧---Wei J / CyberTail Games Co-founder
3)如何處理出好看的卡通渲染---Kuro / 火炬 共同創辦人
https://www.youtube.com/watch?v=ZazQ9MiGEXk
常见两种方式, Android 导出 jar, .aar 为文件到Unity中作为Plugins用, 或者Unity Export Project 工程然后 安卓开发。 作者分享的是第二种。
2、SRP ScriptableRenderPipeline
https://github.com/Unity-Technologies/ScriptableRenderPipeline
利用Unity的功能自己写一个 :
https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/custom-pipeline/
https://github.com/keijiro/Retro3DPipeline
3、 在Unity中阴影的实现方式:
https://luumoon.github.io/2018/02/28/Planar-Shadow-%E5%AE%9E%E7%8E%B0%E5%8F%8A%E5%BA%94%E7%94%A8/
1) Unity自带阴影
2)Projector Shadow方式
其中有插件,如Dynamic Shadow Projector (免费)。
https://zhuanlan.zhihu.com/p/42433900 看评论好像这种方案的性能并没好出太多~~
3)Planar Shadow
听说是镇魔曲游戏使用这个方案
- https://forum.unity.com/threads/shader-sharing-the-most-simple-shadow-shader-planar-projection-shadowing.319830/
- https://github.com/ozlael/PlannarShadowForUnity
- http://qiankanglai.me/2016/12/23/planar-shadow/index.html
4)Unity 2017 Tutorial - Blob Shadow Projector - Fake Shadow - YouTube
就是使用Unity提供的 Projector 组件, 做假的阴影, 正常如果游戏地面平台 可以使用一个假的阴影模型, 但是效果很差。 但是都说Projector有些性能问题。 比如Unity Standard Assets 中有 Effects.unitypackage -》 Projectors -》 BlobShadowProjector.prefab
5) 直接使用一个假的模型片 (不动的npc, 小范围移动的怪(地要平),这个模型片也要高于地面一些, 简单粗暴,可以考虑使用, Unity动态合批,这种阴影都可以合并为一个DC) Unlit/Transparent shader就行
4、 Unity Chan的卡通渲染Shader, UTS已經到2.0.6版了,作者小林信行也把它和Aura 2, 一套製作環境光源和霧氣的套件整合,重新賦予2014年所發佈的演唱會專案新的感覺。
想做VTuber類型專案,一定要研究這個Shader。
https://www.youtube.com/watch?v=UqHwICpl5ps&feature=share
UTS2 v.2.0.6 : https://github.com/unity3d-jp/UnityChanToonShaderVer2_Project
Aura 2 - Volumetric Lighting & Fog :https://assetstore.unity.com/packages/tools/particles-effects/aura-2-volumetric-lighting-fog-137148
Unite Beijing 2018的一段Unity烘焙光照演說,仔細說明了參數設定與光照烘焙注意事項,非常值得一聽。
众多技术大牛在Unite Beijing 2018中为开发者带来了精彩的技术演讲,内容涵盖游戏开发、技术美术、工业等多个领域。错过本次大会的开发者也无需担心,Connect为大家整理了文字版演讲实录,让我们看看都有哪些内容吧!
- 浅谈伽玛和线性颜色空间
- Unity Shader着色器优化
- Lightmap烘焙最佳实践
- 解析AssetBundle https://www.youtube.com/watch?v=mMjcDjM8Fm8
- 玩转移动端大型世界开发 刘伟贤 ─【Unity 議程】Unity MMORPG 遊戲優化https://www.youtube.com/watch?v=Z1zE-AWgYZ4
- 基于照片建模的游戏制作流程
- Playable API:定制你的动画系统 成亮 ─ 【Unity 議程】利用 Cinemachine 實作遊戲運鏡系統 https://www.youtube.com/watch?v=3hDvBcQZxKQ
- Unity工业之路
- 使用自定义渲染纹理实现炫酷特效
- 未来影像,影向未来
- 《崩坏3》:在Unity中实现高品质的卡通渲染(上)
- 《崩坏3》:在Unity中实现高品质的卡通渲染(下)
- 育碧-《Eagle Flight》背后的研发
- 《旅行青蛙》小规模开发的匠心独运
- 江毅冰-《从AAA游戏到实时渲染的动画电影》
- ProBuilder快速关卡建模实践
- 利用Cinemachine快速创建游戏中的相机系统
5、
https://connect.unity.com/p/fake-nulle-a-operator-i
运算符 "??" 和 "?." 是假的空
对象存储在内存中的哪个位置?
在我更多地谈论假空值之前,我需要解释一下内存管理的方式以及特定对象存储在内存中的位置。
类的实例instancje (zwykłych)存储在哪里?
下面是我们可以在C#的帮助下创建的典型类的示例。
class ExampleClass
{
}
只要我们引用它们,这些类的实例将保留在内存中。
ExampleClass instancja = new ExampleClass();
如果我们没有引用它们,它们将被垃圾收集器删除。这些类的实例将存在于托管内存中
ExampleClass instancja = new ExampleClass();
// 我赋值null因此我失去了对ExampleClass实例的引用
instancja = null;
我赋值null因此我 对ExampleClass类实例的引用
继承自UnityEngine.Object类的类的实例存储在何处?
从UnityEngine.Object 类开始,它们继承:
- gameObject
- 所有组件(例如Transform,Rigidbody等)
- 所有Asset(例如,Texture,ScriptableObject,AudioClip等)
这些对象同时在本机和托管内存中。
它是由什么产生的?
Unity编辑器是用C ++编写的。在这种语言中,已经实现了各个类和编辑器功能的操作。我们无法直接获得各个类的实现。
我们在C#中编写与我们的游戏相关的代码,因为它的简单性(相对于C ++语言)。
我们在脚本中使用的与资产,组件和游戏对象相关的类是包装器,它允许您处理实际位于本机端的实例实例。
下面是GameObject 类的示例。该类不实现gameObjects本身。它允许您管理本机端的gameObject实例并与之通信。
概括
从UnityEngine.Object 类继承的对象实例同时存在于本机和托管内存中,其他对象的实例仅存在于托管内存中。
检查对象是否存在的方法
首先让我讨论UnityEngine.Object 类中的方法。
UnityEngine.Object 上的转换 bool运算符
UnityEngine.Object 类有一个特殊的运算符,允许您检查对象是否存在。
https://docs.unity3d.com/ScriptReference/Object-operator_Object.html
using UnityEngine;
public class FakeNullTest : MonoBehaviour
{
void Start()
{
GameObject gameObject = new GameObject();
//我们可以直接将对象分配给bool值以检查它是否存在
bool obiektIstnieje = gameObject;
// 我们也可以直接否认对象的存在
bool obiektNieIstnieje = !gameObject;
// 或者将对象 放在if 中
if (gameObject)
{
Debug.Log(gameObject);
}
//而不用直接判空
//if (gameObject!=null)
//{
//}
}
}
操作符 == 和 !=
要检查对象是否存在,我们还可以使用operator ==或!=
using UnityEngine;
public class FakeNullTest : MonoBehaviour
{
void Start()
{
GameObject gameObject = new GameObject();
// 我们检查对象是否为null
if (gameObject!=null)
{
Debug.Log(gameObject);
}
}
}
方法函数 System.Object.ReferenceEquals() 和 System.Object.Equals()
这是另外两种检查对象是否存在的方法。
但是,正如您将立即看到的那样,对于从UnityEngine.Object 继承的对象,它们并不总是在Unity编辑器中正常工作。以下示例检查gameObject在尚未初始化时是否为null。
我们在编辑器中执行测试。
using UnityEngine;
public class FakeNullTest : Mon