Unityの最も深刻な制限は何ですか?[閉まっている]


30

UnityとUDKとIDについてのこの白熱した質問を読んで、私は知りたがっています:Unityの繰り返しの打撃、最も不自由な制限は何ですか?

この質問を主観的ではないようにするために、繰り返しになりますが、Unityで最も繰り返される犯罪者についてです。これは、Unityユーザーとして、使用を開始する前に誰かがあなたに話してくれたことを本当に望んでいるものです。

Unityはバージョン管理をうまく処理できないと聞いたことがあります。これは、Unityが多くのバイナリファイルを生成するためです(差分化はできません)。私にとって、これは私が単独で働いているので、本当に不自由ではありません。

考え?


1
DVはありますが、コメントはありません。2.5yoの質問ですか?何故ですか?
ashes999 14

おそらくランダムにつまずくだけでしょう。この質問は、最初から明らかに意見に基づいています。「この質問を非主観的にするために」と言っても、それが主観的ではないわけではありません。なぜなら、最も厄介だと感じる上位の繰り返し犯罪者は、次のユーザーの上位犯罪者と同じではないからです。そのようなリストはほとんど価値がなく、神話を強制するのに役立ちます。たとえば、誰もが「Xは事だ」と言ったが Xは1週間後のUnityアップデートで修正されますが、トップランクの回答はおそらく「Xは「巨大な問題」をリストの一番上に、さらに数年後。
LearnCocos2D

さらに、正しい答えとして受け入れられるのはどの答えですか?あなたが考えてみれば、答えのどれもとして受け入れてはならない、この質問に答える権利方法はありませんので、答え。それはおそらく主観的な質問の一番の指標です。
LearnCocos2D

回答:


33

Unityのメンバーは、コミュニティが直面している主要なqualめ言葉を聞いて、結果的に物事を改善することを約束することに耳を傾けることについてかなり良かったということを序文させてください。また、特定のプラットフォームでのみ発生する問題や、個人的な好みの問題、または作業中のゲームの特定の問題の問題も数多くあります。

言われていること:

1)不十分なソース管理の統合と大規模なチームツール。あなたが述べたように、多くの非差分バイナリファイル。エディターは、シーンファイルの読み取り専用フラグを無視します。チェックインする必要がある実際のファイルはすぐにはわかりません。この一部は、SVNとP4の統合により3.5で修正されています。テキストベースのシーン形式の約束もあります。更新:テキストベースのシーン形式が、ProバージョンのUnityで利用可能になりました。こちらをご覧ください

2)遅い、プログラマー中心のUIツール。各ウィジェットは独自の描画呼び出しであり、モバイルプラットフォームでは多くのオーバーヘッドが発生します。アニメーション付きのパネルや、UIをロールバックせずにUIを快適にする他のすべてのもののような概念はありません。ロードマップ(3.6?)には新しいUIシステムの約束があります。サードパーティ製のツールもいくつかありますが、それらは素晴らしいものではありません。

3)本当に初歩的なパーティクル編集。しかし、彼らは3.5の新しいカーブベースのシステムを約束しています。更新:手裏剣と呼ばれるこの曲線ベースのシステムが利用可能になりました。こちらをご覧ください

4)プレハブをネストすることはできません。小さな問題ですが、プレハブシステムとそれが提供するすべてのパワーの操作に慣れていると、イライラする可能性があります。これは約束されていますが、具体的な日付はありません。更新:プレハブをネストできるようになりました。

5)空気制限を超えてiOSゲームを入手することは不可能に近い。バイナリのみでは、ベストケースのシナリオでは8 MBになります。これは簡単に修正できるものではありません。

6)ヌル参照例外は、JITコンパイル済みコードを許可しないプラットフォームをクラッシュさせます。スタンドアロンバージョンまたはWebバージョンでは、NREがキャッチされます。まだキャッチされていない例外ですが、少なくともアプリケーションは実行を継続しようとします。iOSでは、デバイスがクラッシュします。デバッグモードにすると、いくつかの種類の例外をキャッチできますが、パフォーマンスが低下します。

7)マルチプラットフォームゲームで作業する場合、ビルドターゲットを切り替えるたびにすべてを再インポートする必要があり、時間がかかります。実際に、プロジェクトの複数のコピーをディスク上に置くだけで、この問題を回避しました。どうやら3.5にインポートされた資産サーバーがあります。


1
@iamcreasy、スーツを着て、男。「Dropboxはストレージサービスとして機能しますが、その焦点は同期と共有にあります。改訂履歴をサポートしているため、Dropboxフォルダーから削除されたファイルは、同期されたコンピューターから復元できます。[33] [34]ユーザーは現在作業中のファイルの履歴を知っているため、以前のフォームを失うことなく、複数のユーザーがファイルを編集および再投稿できます。[35]バージョン履歴は30日間に制限されています。 「Pack-Rat」と呼ばれる無制限のバージョン履歴が利用可能です。
エンジニア

6
たぶん私は不公平になっていますが、NullReferenceExceptionsはプログラマのせいだと思っています。受信パラメータを確認する必要があります。もちろん、VisualStudioで取得するようなMonoDevelop向けのコード分析アドオンがあれば、簡単に適用できます
...-

1
@ ashes999新しいテクノロジーに関して、学ばなければならない用語が常にいくつかあります。言葉は概念に対する私たちのハンドルです。同じことが基本的なFlashにも当てはまります。ただし、Unityのユーザビリティに関する誇大広告は無料ではありません。非プロの開発者の参入障壁を下げ、プロがはるかに少ない費用ではるかに多くのことを行えるようにします。想定される制限についてあまり心配しないでください。チャンスはそれらのほとんどがあなたにとっても障壁ではないかもしれません。私が心配する唯一のことは、nullポインタ例外であり、それらはデバッグ可能です。
エンジニア

3
Tedradの答えは、Unity 4.1.xでどのように保持されますか?誰か知っていますか?
シル

1
「プレハブをネストできるようになりました」と言うとき、何を言っていますか?質問が最後に編集されてから、この機能が削除された可能性がありますか?または、このアドインを参照していますか?
NauticalMile

6

私と友人がより大きなプロジェクトのためにUnityを評価したとき、大きな問題の1つはソフトウェアスキニングのパフォーマンスであることがわかりました。正確に覚えていれば、それぞれ約1000の頂点を持つ10個のアニメーション化されたオブジェクトのようなものがあり、ミッドエンドコンピューターを使用しているときに20fpsを取得しました。


これはどれくらい前ですか?ほぼすべてのバージョンのリリースノートに、スキニングパフォーマンスの改善に関する何かがあるようです。iOSの場合、GPUスキニングの実行からFPUの使用に切り替えたのは、はるかに高速だったためです。
テトラッド

それは一ヶ月前だった...
Cpt。

6

私の一番の問題は、バージョン管理の変更でした。ソリューション?UnityプロジェクトにDropBoxを使用するだけです。正しく設定した場合(つまり、「PackRat」サービスの料金を支払う場合)、改訂履歴が維持されます。このように、従来のバージョン管理について知りたくないデザイナーとの共同作業がはるかに簡単になり、DropBoxは透過的なソリューションを提供します。欠点は、ブランチ/マージが実際にはサポートされていないことです。git、SVN。

疑う人のために...

Dropboxはストレージサービスとして機能しますが、その焦点は同期と共有にあります。改訂履歴をサポートしているため、Dropboxフォルダーから削除されたファイルは、同期されたコンピューターのいずれかから復元できます。[33] [34] Dropboxのバージョン管理は、ユーザーが現在作業しているファイルの履歴を知るのにも役立ち、以前のフォームを失うことなく、複数のユーザーがファイルを編集および再投稿できるようにします。バージョン履歴は30日間に制限されています。「Pack-Rat」と呼ばれる無制限のバージョン履歴の有料オプションが利用可能です。

こちらをご覧くださいUnityフォーラムの参考資料については、を。

それ以外に、Unityで迷惑なのは、Cが行う方法(main())またはAS3が行う方法(ドキュメントクラス)にアプリケーションエントリポイントがないことだけです。ただし、アプリのinitは空のGameObjectに配置するだけで、大したことではありません。コードフローもこの固有の構造を中心に少し異なりますが、繰り返しになりますが、理解するのにそれほど難しくありません。

ライセンスに関しては、ほとんどの人はあなたができることは何でもできるということに気づいていません(特に、プロライセンスとアセットマネージャーアドオンにお金を払わない小さなインディーオペレーションや愛好家に言及しています)ベーシック/無料版が必要です。本当に大きな障壁ではありません。Unityチームは非常に寛大です。


1
うん しかし、+ 1-これは本質的に私が望んでいたものです。
ashes999

Hehe、開発者なら誰でも同じように感じると思います。しかし、それが仕事をするなら
エンジニア

2
UnityでGitを使用します。.gitignoreファイルのセットアップには少し手間がかかりますが、機能し、VCSの完全な機能セットを提供します。
キロタン

2
UnityでMercurial(BitBucketを使用)を使用しており、.hgignoreファイルを適切に設定すればうまく機能します。
JD

@JD(&Kylotan)-シーンファイルがマージできないという問題をどのように回避しましたか?
UpTheCreek

6

日常的に私を悩ませる別の大きな制限を考えたので、これを個別に投稿します。

Unity3Dでは、MonoDevelop、特に配布するMonoDevelopの古いバージョンでスクリプトを編集することを望んでいます。このバージョンの「ファイルの検索」機能は壊れています。これを使用すると、通常IDEがハングし、使用できなくなります。

これはどのエンジンでも大きな刺激になりますが、Unityではさまざまなゲームオブジェクトに作用する個別のコンポーネントの非常に分散したシステムを促進するため、大きな刺激になります。しかし、さまざまなコンポーネントを検索することさえできない場合、どのコンポーネントがどのプロパティにアクセスしているかをどのようにして見つけることができますか?

編集:この回答は2011年に投稿されました:ありがたいことに、ファイル内の検索バグはしばらく前に修正されました。また、コメンターが言うように、他のエディターでコードを編集できます(ただし、デバッガーで実行できるようにする場合は選択が制限されます)。


1
価値のあるものについては、Unityで任意のIDEを使用できます(Visual Studio Proを使用しています)。ただし、デバッガを使用する場合は、MonoDevelopに限定されます。
テトラッド

1
確かに、デバッガーは非常に重要です(MonoDevelopがそれほど優れていなくても)。さらに、残念ながら、Visual Studio Expressでは動作しないという。私は人々が使用する他のC#IDEを知りません。しかし実際には、Unityに同梱されているものはより良い形になっているはずです。
キロタン

また、崇高Texthttpのような他のテキストエディタを使用することができます。//wiki.unity3d.com/index.php/Using_Sublime_Text_as_a_script_editor
テランス

試したことはありませんが、デバッグ用にVisual Studioを使用する方法があることを読みました(プラグイン経由で)。ただし、これはProバージョン専用の場合もありますが、わかりません。
クリスチャン14

FWIW、UnityVSはVisual Studioの統合をよりスムーズにします。デバッグ、ステップオーバーなどができます
基本

5

私にとって最も深刻な制限はEULAです。

「ギャンブルの制限Unityからの個別のライセンスなしに、ギャンブル活動に関連してライセンシーコンテンツを配布または公開することはできません。」

つまり、v4.0以降、お客様またはお客様のクライアントがケースバイケースで交渉される追加のライセンス料を支払う準備ができていない限り、現金/チャンスを伴うゲームにUnityを使用することはできません。すなわち、彼らはあなたがどれだけの価値があるかを見て、それに応じてあなたに課税し、6つの数字が引用されます。

さらに不安なのは、v5 EULAに追加する内容を誰が知っているかということです。おそらくすべてのソーシャルゲームですか?おそらくすべてのマルチプレイヤーゲームですか?

Unityを使用している開発者は、将来のリリースで身代金を要求されるリスクがあります。


4
サードパーティのツールまたはソフトウェアは、新しいバージョンでEULA条項を追加(または削除)する可能性があります。それがUnityにどのように特有なのか、私には本当にわかりません。さらに、証拠を裏付けることなく、ギャンブル禁止条項がソフトウェア全般の最も厳しい制限となるほど深刻であると主張するのは奇妙に思えます。これは、元の(現在は話題から外れている)質問が達成しようとしていたものです。Unityゲームの大部分がギャンブルを中核とする機能に依存して作られていない限り、この答えはもっと暴言のようです。
ジョシュ

4

良い質問。私にとって、最大の問題はGUIです。私はそれがプログラマ中心であることを気にしませんが、GUIオブジェクトがオブジェクトではなく関数であるというひどい方法を気にします、そしてそのGUI処理はすべてレンダリングとイベント処理に使用される1つの関数呼び出しに詰め込まれます、入力システムとの統合がないこと(GUI要素のクリックは、世界のクリックとして解釈できることを意味します)など。

副次的な問題は、適切なバージョン管理のサポートがないことです(ほとんどの場合、システムはプロジェクトレイアウトとしてディレクトリレイアウトを使用するため、移動または名前を変更するときにVCSが混乱します)が、これは回避でき、問題にはなりませんみなさん。


GUIシステムにクエリを実行してクリックが消費されたかどうかを確認し、ワールドオブジェクト選択コードでクリックを無視できます。面倒ですが、動作します。
ショーンミドルディッチ

どうしますか?
キロタン

入力システムオブジェクトに「ホット」要素のIDを取得するプロパティがあります。これは、カーソルの下にGUI要素がない場合はゼロになります。ただし、正確なプロパティ名を忘れてください。統一スクリプトリファレンスに含まれている必要があります。
ショーンミドルディッチ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.