LayaBox---TypeScript---首次接触遇到的问题

Posted 格拉格拉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LayaBox---TypeScript---首次接触遇到的问题相关的知识,希望对你有一定的参考价值。

目录

1.拖拽图片到层级面板,F6执行,在画布中不显示

2.脚本中定义了公共变量,在面板中不显示

3:选中物体,调整collider的x为负数时,运行时,物体消失。

4:获取物体坐标

问题5:通过物体获取该物体上挂载的脚本

问题6:暴露在属性面板的变量 在面板赋值后,代码内调用显示为null 或 undefined

问题7.注意就算在不同的脚本里也不能使用相同名字的变量

问题8:如上,获取脚本挂载物体下的子物体没有问题,获取其它物体就取不到。


LayaAir脚本参数说明

1.拖拽图片到层级面板,F6执行,在画布中不显示

尝试了几次发现 不显示的图片与显示的图片区别就是。 不显示的图片没有设置为‘不打包’。尝试将图片改成不打包,结果显示正常。

2.脚本中定义了公共变量,在面板中不显示

  /** @prop name:intType, tips:"整数类型示例", type:Int, default:1000*/
    public intType: number = 1000;
  /** @prop name:numType, tips:"数字类型示例", type:Number, default:1000*/
    public numType: number = 1000;
  /** @prop name:strType, tips:"字符串类型示例", type:String, default:"hello laya"*/
    public strType: string = "hello laya";
  /** @prop name:boolType, tips:"布尔类型示例", type:Bool, default:true*/
    public boolType: boolean = true;
  /** @prop name:shoe,tips:"物体",type:Node,default:null*/
    public shoe = null; 

// 更多参数说明请访问: https://ldc2.layabox.com/doc/?nav=zh-as-2-4-0

反复研究了许多遍,最终发现问题出在layaAir IDE 没有自动刷新机制,需要手动选中非该脚本挂载的物体,然后再回来,才能刷新出新定义的变量属性.

就很栓Q,差点要改写博客为: LayaBox从安装到卸载了

3:选中物体,调整collider的x为负数时,运行时,物体消失。

需要在层级面板选中该物体下的collider组件,而不要选中该物体 然后去属性面板调collider的位置。

4:获取物体坐标

Node类型的物体没有坐标属性,需要手动转为Laya.Sprite 或 3d的 Laya.Sprite3D

private own:Laya.Sprite = null;

this.own = this.owner as Laya.Sprite;

console.log(this.own.y);

问题5:通过物体获取该物体上挂载的脚本

脚本挂载到最上层的Scene物体上,就获取不到物体。也就无从获取物体上的脚本了

解决办法:不要把脚本挂到场景物体上,可以选择其它子物体,然后去获取就可以了。

 /** @prop name:score,tips:"物体",type:Node,default:null */
    score = null;

private scoreScript = null;

onAwake()

    this.scoreScript = this.score.getComponent(ScorePanel);

问题6:暴露在属性面板的变量 在面板赋值后,代码内调用显示为null 或 undefined

研究半天没找到原因和解决办法,最后更换为代码获取

private txt_timer:Laya.Text =null;
private txt_myScore:Laya.Text =null;
private txt_aiScore:Laya.Text =null;

onAwake()

    this.txt_myScore = this.owner.getChildByName("txt_myScore") as Laya.Text;
    this.txt_aiScore = this.owner.getChildByName("txt_aiScore") as Laya.Text;                     
    this.txt_timer = this.owner.getChildByName("txt_timer") as Laya.Text;

问题7.注意就算在不同的脚本里也不能使用相同名字的变量

问题8:如上,获取脚本挂载物体下的子物体没有问题,获取其它物体就取不到。

 this.time_down = Laya.stage.getChildByName("txt_timeDown");

直接在layaBOX的层级面板添加的物体。好像不会添加到stage里。所以调试结果stage下的child数量为0.   最后更换了获取方式为:

//获取同级物体
let go = this.owner.parent.getChildByName("objName")

问题9:

以上是关于LayaBox---TypeScript---首次接触遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章

LayaBox---TypeScript---基础数据类型

LayaBox---TypeScript---三斜线指令

layaBox---TypeScript---接口

LayaBox---TypeScript---函数

layabox typescript 安装固定版本

LayaBox---TypeScript---类