0%

需求分析

  1. Runtime Console
    我们需要运行时的控制台来辅助我们调制,包括输出自定义日志和捕获异常信息。
    该控制台须在 Win, Mac, Android, iOS 等平台上安全运行,并且不妨碍程序的正常运行,如果有必要,这个控制台还需要支持远程调试。
  2. Log File
    Unity 原生的日志文件过于冗杂,并且存贮在我们并不喜欢的位置,我们需要一个更完善的并且可在运行时输出的日志文件。
  3. 优化 GC
    在 Editor 模式下,我们或许不会太过在乎 GC,但是在 Release 模式下,我们会经历避免日志这样不必要的 GC。一般来说,我们会在打包时禁用所有的 Debug.Log,但是这样一来工作量过大,二来我们无法在运行时输出日志。

从 hello world 开始

1
2
3
fn main() {
println!("Hello, world!");
}
阅读全文 »

Unity 的预计算实时 GI 或者烘焙 GI 只对静态的物体起作用,对于可移动的物体,需要用一种新的技术来解决光照问题。

为了让动态物体(如动态场景元素或角色)能够获得静态物体反弹的光线,需要将这些光照信息记录下来,并且在运行时能快速读取和使用。

通过在场景中放置采样点捕捉各个方向的光线来实现动态物体接收间接光的功能。这些采样点记录的光照信息被编码成可以在游戏过程中快速计算值。在 Unity 中,我们将这些采样点称为“光照探针”

  • 让动态物体从场景接受间接光
  • 使用该技术的动态物体不会产生反射光 => 使用于较小的物体
阅读全文 »

涉事代码

1
2
3
4
5
6
7
8
9
10
11
12
void Update()
{
if (Input.GetMouseButtonDown(0))
{
var pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Debug.Log(pos);
var posInt = tileMap.WorldToCell(pos) + new Vector3Int(0,0,10);
Debug.Log(posInt);
tileMap.SetColor(posInt,Color.red);// BUG
Debug.Log(tileMap.HasTile(posInt)+" "+tileMap.GetSprite(posInt)+" "+tileMap.GetColor(posInt));
}
}
阅读全文 »