unity为啥将赋值的模型作为预制物,然后赋值丢失

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity为啥将赋值的模型作为预制物,然后赋值丢失相关的知识,希望对你有一定的参考价值。

参考技术A 任何只存在于 scene 里的物体都不能赋值给 Prefab,毕竟你可能有很多 Scene。把那个物体拖进 ProjectView 里面,让它成为Prefab后就能赋值给Prefab了。本回答被提问者采纳

unity error CS0201: 只有赋值、调用、递增、递减、等待和新对象表达式可以作为语句使用

【中文标题】unity error CS0201: 只有赋值、调用、递增、递减、等待和新对象表达式可以作为语句使用【英文标题】:Unity error CS0201: Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement 【发布时间】:2020-04-08 07:14:08 【问题描述】:

我刚开始编程,正在学习如何统一制作游戏的教程 所以我做了一切就像视频说的但我仍然收到这个错误 谁能解释一下我做错了什么?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour


    public float playerSpeed = 500;
    public float directionalSpeed = 20;

    void Start()
    
       // Start is called before the first frame update            
    

    // Update is called once per frame
    void Update() 
#if UNITY_EDITOR || UNITY_STANDALONE || UNITY_WEBPLAYER
        .transform.position.y, gameObject.transform.position.z), directionalSpeed * Time.deltaTime);
#endif
        float moveHorizontal = Input.GetAxis("Horizontal");
        transform.position = Vector3.Lerp(gameObject.transform.position, new Vector3(Mathf.Clamp(gameObject.transform.position.x + moveHorizontal, -2.5f, 2.5f), gameObject
        GetComponent<Rigidbody>().velocity = Vector3.forward * playerSpeed * Time.deltaTime;
        //Mobile Controls
        Vector2 touch = Camera.main.ScreenToWorldPoint(Input.mousePosition + new Vector3(0, 0, 10f));
        if (Input.touchCount > 0)
            
           transform.position + new Vector3(touch.x, transform.position.y, transform.position.z);            
             
    

【问题讨论】:

请注意,这个transform.position + ... 也绝对没有任何作用......它会返回一个新的Vector3,但结果没有存储在任何地方......您可能想将其设为+= 或仅= 而不是实际移动对象? 【参考方案1】:

实际上你会得到的代码是:

void Update() 
.transform.position.y, ...), directionalSpeed * ...);

这是无效的。这就是为什么。

【讨论】:

以上是关于unity为啥将赋值的模型作为预制物,然后赋值丢失的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Unity 中的特定位置生成预制件,然后删除该值?

为啥物体在 Unity 中会粘在一起?

unity 将fbx模型直接转为prefab预制体

为啥将 Collections.emptySet() 与泛型一起使用在赋值中而不是作为方法参数?

两个list,把其中一个赋值到另外一个,然后清空前一个list,为啥后一个list也空了?怎样让其保持不变

Unity中使用代码将预制加载到场景