【问题标题】:Tjovos Questions room: transform.localScale.x error: how to fix the errorTjovos 问题室:transform.localScale.x 错误:如何修复错误
【发布时间】:2021-07-07 16:03:14
【问题描述】:

这是我的代码:

transform.localScale.x + 0.1f;

呵呵,谁能想到:

Assets\Test.cs(18,13): error CS0201: Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement

所以,对于问题:我想做一个健康栏。所以一个带有纹理的立方体应该只改变 x 方向的大小。但我得到了错误。如何修复错误?问候 Tjovo 工作室。

【问题讨论】:

    标签: c# unity3d compiler-errors scale


    【解决方案1】:

    transform.localScaleproperty 返回(getter)或分配(setter)Vector3,这是一个 struct

    直接更改 struct 的字段/属性值是 a) 不允许(请参阅异常)和 b) 它不会产生任何影响,因为不会调用属性的设置器。

    你得走了

    var localScale = transform.localScale;
    localScale.x += 0.1f;
    transform.localScale = localScale;
    

    或者如果您更喜欢单线(尽管最终效率不高)

    transform.localScale += Vector3.right * 0.1f;
    

    虽然这完全超出了您的问题的范围 - 请在未来遵守社区规则 - 让对象仅向某个方向发展的一个简单解决方案是养育。

    在您的情况下,如果您只想从右 (0) 到左(1 或最大)增加健康条,我会使用类似的设置

    healthBarAnchor
    |--healthbarVisualizer
    

    然后确保healthbarVisualizer 具有相对于healthBarAnchor 的局部位置偏移,使其左边缘位于healthBarAnchor 的轴心点。 (=>healthbarVisualizer.transform.localPosition = healthbarVisualizer.transform.localPosition + 0.5f * healthbarVisualizerWidth)

    这样,每当您向上或向下缩放父对象时,子对象都会保持锚定,左边缘位于父对象的中心轴。

    【讨论】:

    • 谢谢,我如何只改变左边的尺寸?
    • 因为您关于对象向一个方向增长的后续问题仅与关于分配transform.localScale.x += 0.1f; 的编译器错误的原始问题无关您通常会进行新的研究并打开一个针对该特定问题的新问题;)
    • 1.我不能一天问 2 个问题
    • 2.这是我的问题
    猜你喜欢
    • 2020-12-19
    • 2016-06-26
    • 2019-01-31
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 2020-04-26
    • 2018-12-22
    • 1970-01-01
    相关资源
    最近更新 更多