OT源代码的分析,OrtHello 迟早攻破你 (二)OT的基本属性和基本流程

本文深入探讨OT框架,介绍了OT作为MonoBehaviour的子类如何管理场景对象,包括初始化检查、对象创建与销毁、材质设置、精灵生成等功能。核心特性如对象池、全局变量如dirtyChecks和debug开关,以及检查鼠标点击和触碰的静态方法。此外,还提供了如ContainerByName、CreateObject等便利的查找和创建工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OT三大基本物体:


首先我们看OT:它继承了最基本的MonoBehaviour,它是放置在场景中的,提供一些基本的属性

它的4大功能:

Check if framework is initialized (isValid)

Find your objects, animations, (sprite)containers and materials programmaticly.

Set your default solid/transparent and additive material.  (这点大概是最重要的,不用设置繁琐的材质了)

Create a sprite programmaticly.

属性有:

objectPrototypes,就是我们在unity看到的预设的5个种类的物体,materials就是预设的材质了

以下是全局变量了-,-

public static bool dirtyChecks = true;   检查每一个物体的肢体是否绑定成功 ,会花费10fps (very rough estimate).

public static bool objectPooling = true;  创建和销毁物体的时候会 Pooling 放到缓冲池-,-暂定

public static bool debug = false;

public static bool isValid (在updata会检查)

public static float fps   返回fps

public static int objectCount

public static int containerCount     注册的containers 数量

public static int animationCount    注册的animation 数量

public static OTView view   //摄像机的控制


public static bool Over(GameObject g)

public static bool Over(OTObject o)  划过一个物体

public static bool Clicked(GameObject g, int button) 是否我们的mouse点下了一个sprite

public static bool Clicked(GameObject g)

public static bool Clicked(OTObject o)

public static bool Touched(GameObject g)  物体是否可touch

public static bool Touched(OTObject o)


GetMaterial(string name)  和一些列材质的函数

查找函数

ContainerByName(string name)   返回OTContainer

AnimationByName(string name)   返回OTAnimation

ObjectByName(string name)           返回OTObject

 public static void PreFabricate(string objectPrototype, int numberOfInstances)  创建一个物体缓冲池


public static GameObject CreateObject(string objectPrototype) 创建物体 (放入缓冲池中)

public static void DestroyObject(OTObject o)         销毁物体 (放入缓冲池中)

public static void DestroyContainer(OTContainer container)

public static void DestroyAnimation(OTAnimation animation)


public static void RemoveObject(OTObject o)

public static void RemoveAnimation(OTAnimation o)

public static void RemoveContainer(OTContainer o)  //一系列重载


public static OTObject[] ObjectsUnderPoint(Vector2 screenPoint, OTObject[] checkObjects, OTObject[] ignoreObjects)

 //Get all orthello objects under a specific point   是不是用来做某些检测用的,有一系列重载

public static OTController Controller(string controllerType, string name)


它自己的updata函数

void Update()
    {
        if (instance == null) instance = this;

        if (Application.isEditor)
        {
            if (!Vector3.Equals(transform.position, Vector3.zero))
                transform.position = Vector3.zero;
        }

        // check for clicks
        if (inputObjects.Count > 0)
        {
            if (Input.touchCount > 0 ||
                Input.GetMouseButton(0) ||
                Input.GetMouseButton(1) ||
                Input.GetMouseButton(2) ||
                Input.GetMouseButtonDown(0) ||
                Input.GetMouseButtonDown(1) ||
                Input.GetMouseButtonDown(2) ||
                Input.GetMouseButtonUp(0) ||
                Input.GetMouseButtonUp(1) ||
                Input.GetMouseButtonUp(2))
            {
                if (Input.touchCount > 0)
                    HandleInput(Input.touches[0].position);
                else
                    HandleInput(Input.mousePosition);                     
            }
        }

        // calculate fps every 100ms
        fpsTime += Time.deltaTime;
        if (fpsTime >= 0.1f)
        {
            _fps = 1 / Time.deltaTime;
            fpsTime = 0;
        }
		
		
		if (controllers.Count > 0)
        {
            for (int c = 0; c < controllers.Count; c++)
            {
                OTController co = controllers[c];
                if (co.enabled)
                    co.Update(Time.deltaTime);
            }
        }

 }
OT就是酱紫了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值