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为啥将赋值的模型作为预制物,然后赋值丢失的主要内容,如果未能解决你的问题,请参考以下文章
为啥将 Collections.emptySet() 与泛型一起使用在赋值中而不是作为方法参数?